国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 系統 > iOS > 正文

iOS高仿微信文章懸浮球功能

2019-10-21 18:39:58
字體:
來源:轉載
供稿:網友

iOS,微信,懸浮球

前言

微信在最新版本6.6.7,新加了一個文章懸浮球功能。當你正在閱讀文章的時候,突然有好友發來了緊急消息,你需要立即回復。又或者你剛好路過小吃店,需要臨時打開微信支付,等等臨時中斷閱讀的情況。以前只有退出文章詳情頁面,處理完事情之后,再挨著挨著找到原來的文章。對于我們這種重度微信使用者來說,每次遭遇這種情況,真的很蛋疼。所以,當這個功能推出的事情,立馬更新了最新版本,這個功能感覺就像遇到了知心人一樣,用起來十分順手。可以通過下面的動圖感受一下

iOS,微信,懸浮球

其實懸浮球的概念早就有了。比如360助手的流量監控球,iPhone自帶的AssitiveTouch(就是那個可愛的小白球)等等。

倉庫地址

Github地址 喜歡就點顆:heart:

核心技術點

體驗過后,讓人手癢癢,情不自禁得想要模仿一把。如果你的APP可以集成該功能,我覺得可以讓你的APP逼格瞬間提升一個level。好了,下面讓我們來一一解剖,微信文章懸浮球的核心技術點:

1.懸浮球的出現

當我們通過屏幕邊緣手勢pop視圖的時候,右下角會有一個圓角提示圖,跟著手勢進度移動。

如何獲取到UIScreenEdgePanGestureRecognizer的進度呢?

因為系統自帶的interactivePopGestureRecognizer是被封裝起來的,它的action我們無法掛鉤拿到里面的手勢進度。所以,需要另辟蹊徑了。

首先,讓UINavigationController的delegate等于自己,然后讓多個手勢可以同時響應。

self.interactivePopGestureRecognizer?.delegate = selffunc gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {  return true }

然后自己添加一個UIScreenEdgePanGestureRecognizer到UINavigationController上面,用于獲取pop手勢的進度。

let gesture = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(handleNavigationTransition(gesture:)))gesture.edges = .leftself.view.addGestureRecognizer(gesture)

這樣子,有兩個UIScreenEdgePanGestureRecognizer可以同時響應,系統自帶的依然保持原有邏輯不動,我們新增的用于獲取pop手勢進度,兩者井水不犯河水,其樂融融。

2.懸浮球全局置頂

既然懸浮球可以在懸浮在任何一個頁面,必然是放在一個新的UIWindow上面。比如系統的鍵盤彈出的時候,就是一個UIRemoteKeyboardWindow在承載。

然后這個window的生命周期不依賴某一個頁面,所以用單例實現比較好。這塊代碼比較分散,直接看源碼就可以了解

3.事件響應

懸浮UIWindow的事件傳遞

只要事件位置沒有在圓球和右下角上,就不響應

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {  let roundEntryViewPoint = self.convert(point, to: roundEntryView)  if roundEntryView.point(inside: roundEntryViewPoint, with: event) == true {   return true  }  let collectViewPoint = self.convert(point, to: collectView)  if collectView.point(inside: collectViewPoint, with: event) == true {   return true  }  return false }

右下角四分之一圓,事件響應

可以看到微信,只有當手指移動進右下角圓內,才能進行懸浮。而不是按著視圖的frame來響應。

首先,通過UIBezierPath畫一個四分之一圓,然后用CGPath的contains(point)方法判斷。

func updateBGLayerPath(isSmall: Bool) {  var ratio:CGFloat = 1  if !isSmall {   ratio = 1.3  }  let path = UIBezierPath()  path.move(to: CGPoint(x: viewSize.width, y: (1 - ratio)*viewSize.height))  path.addLine(to: CGPoint(x: viewSize.width, y: viewSize.height))  path.addLine(to: CGPoint(x: (1 - ratio)*viewSize.width, y: viewSize.height))  path.addArc(withCenter: CGPoint(x: viewSize.width, y: viewSize.height), radius: viewSize.width*ratio, startAngle: CGFloat(Double.pi), endAngle: CGFloat(Double.pi*3/2), clockwise: true)  path.close()  bgLayer.path = path.cgPath } override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {  return bgLayer.path!.contains(point) }

4.自定義轉場動畫

可以看到點擊懸浮球打開的文章,是通過一個自定義轉場動畫實現的,從懸浮球的位置開始展開。

有許多文章都有講解如何自定義轉場動畫,但是我推薦你看這篇文章 幾句代碼快速集成自定義轉場效果+ 全手勢驅動

實現效果

iOS,微信,懸浮球

總結

微信的懸浮球,用到的技術點相對比較多,代碼也比較分    散,如果你的APP要集成該功能,需要認真封裝代碼。

相對于如何實現,我認為如何設計好一個需求更重要。我在模仿的過程中,發現其中有許多細節的邏輯,彼此環環相扣,最終就呈現出了你正在使用的懸浮球功能。

都說程序員和產品經理是相愛相殺,在這里我要為該功能的產品經理點個贊

倉庫地址

如果代碼中有任何問題,否則你有任何疑問,都可以反饋給我,我將第一時間處理。

Github地址 喜歡就點顆:heart:

總結

以上所述是小編給大家介紹的iOS高仿微信文章懸浮球功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
99色在线观看| 午夜国产视频| 精品51国产黑色丝袜高跟鞋| 国产免费永久在线观看| 日本免费视频www| 精品无人乱码| 国产成人福利| 91欧美在线视频| 国产三级在线| 国产亚洲精品久久久久久移动网络 | 日本在线观看| 国产理论电影在线观看| 国产精品久久久久白浆| 国产精品伦一区二区三区视频| 国产一卡2卡3卡4卡网站免费| 国产视频二区三区| 国产不卡视频| 国产麻豆综合视频在线观看| 国产成人福利| 国产永久免费高清在线观看视频| 麻豆精品传媒视频观看| yjizz视频网站在线播放| xxxxx中文字幕| 天天av天天爽| 亚洲大香人伊一本线| 青青草视频在线观看| 国产美女在线播放| www.狠狠操| 国产高清在线| 久热中文字幕精品视频在线| 在线观看av的网站| 国产区av在线| 国产美女在线播放| 国产在线激情视频| 日本片在线看| 日本在线视频www鲁啊鲁| 在线观看av网站| 国产第一页在线| 国产视频二区| 国产高清在线观看| 91这里只有精品| 国产精品白浆流出视频| 国产精品9区| 精品亚洲综合| 日本国产在线| 久热av在线| 九九热视频精品在线观看| 日本a级黄色| 免费在线看v| 国产乱视频在线观看播放| 国产麻豆视频免费观看| 中中文字幕av在线| 国产精品蜜臀| 伊人免费视频| 国产在线拍揄自揄拍视频| 黄色在线视频观看网站| 天天操天天曰| 最新中文字幕av专区| 国产激情视频一区二区| 在线免费观看黄色av| 毛片在线视频| 五月综合激情在线| 91资源在线观看| www.操.com| 中文字幕免费中文| 国产高潮又爽又无遮挡又免费| 精品久久九九| 激情五月色综合亚洲小说| 国产网友自拍电影在线| av福利在线播放| 狠狠狠综合7777久夜色撩人| 最新中文字幕av专区| 在线午夜影院| 国产乱xxⅹxx国语对白| 在线国产91| 国产一级片在线| 在线观看免费高清完整| 国产农村av| 欧美日韩性视频一区二区三区| 中文字幕有码在线视频| jizz亚洲| 在线色视频观看| 国产精品久久麻豆| 国产美女视频网站| 久久久久久77777| 69久久久久| 国产午夜三区视频在线| 成av人免费青青久| www555久久| eeuss影院网站免费观看| 国产盗摄一区二区| 久久一本精品| 人人干人人插| 日本精品一区二区三区在线播放| 精品亚洲综合| 一区二区精品区| 在线āv视频| 精品极品三级久久久久| 国产精品久久久精品a级小说| 国产在线拍揄自揄拍视频| 麻豆视频在线观看免费网站| 亚洲天堂影院在线观看| 在线观看视频污| 999在线视频| 精品偷拍激情视频在线观看| 国产成在线观看免费视频| 国产一卡2卡3卡4卡网站免费| 丁香花在线电影| 超碰在线97国产| 福利视频网址导航| 国产精品一区二区三区四区色| 99视频免费| 国产第一页在线| 天天草天天干| 天堂中文在线视频| 国产黄a三级三级三级av在线看| 国产9色视频| 日本不卡视频一区二区| 国产精品作爱| 在线视频观看你懂的| 欧美aaa一级片| 中文字幕视频在线免费| 中文字幕在线视频免费观看| 午夜国产福利在线| 一区二区免费播放| 成在线人视频免费视频| 国产视频一二三区| av麻豆国产| 非洲黑人最猛性xxxx交| 国产小视频在线| 天天草天天爽| 国产成人久久精品77777| www.亚洲视频| 国产视频97| 久久久久久久久免费视频| 国产三级香港三韩国三级| 青青免费在线视频| 国产小视频在线高清播放| 欧美性猛交xxxx免费看蜜桃| 国产精品视频二区三区| 九九99九九精彩| av在线free| 国产黄色在线免费观看| 国产在线二区| 久久国产精品黑丝| 任你操在线观看| 色吊丝av中文字幕| 亚洲视频网站在线| 国产对白国语对白| 国产理论电影在线观看| 男人天堂网在线观看| 在线成人综合色一区| 国产桃色电影在线播放| 免费a在线看| wwww亚洲| 欧美日韩在线中文字幕| 亚洲人av在线| 永久免费av片在线观看全网站| 国产精品二线| 精品日韩av| 国产9色视频| 精品推荐蜜桃传媒| av福利在线| 思思99精品视频在线观看| 亚洲成人av在线影院| 午夜在线视频| 青草青在线视频| www.麻豆av.com| 成年黄网站在线观看免费| 免费的黄网站在线观看| 久青青在线观看视频国产| 九九在线视频| 国产三级视频在线| 在线视频中文字幕第一页| 夜夜爽视频导航| 亚洲天堂影院在线观看| 欧美成人精品福利网站| 麻豆av电影在线观看| 成网站在线观看人免费| 国产欧美日韩精品综合| 2020国产在线视频| wwww在线观看免费视频| 国内外激情在线| 6699久久国产精品免费| 青青草在线视频免费观看| 天天操人人干| 香蕉视频网站在线观看| 国产在线传媒| 99免费视频| 国产一级片在线播放| 日本动漫同人动漫在线观看| 国产一区精品| a视频在线看| 国产精彩视频在线观看免费蜜芽| av在线不卡网站| 国产三级自拍| 国产免费自拍视频| 伊人影院在线播放| 国产精品久久久久久精| 国产在线高清理伦片a|