亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS仿今日頭條滑動導航欄

2020-07-26 03:28:54
字體:
來源:轉載
供稿:網友

之前在武林網平臺給大家分享了網易首頁導航封裝類、網易首頁導航封裝類優化,今天在前兩個的基礎上仿下今日頭條。

1.網易首頁導航封裝類中主要解決了上面導航的ScrollView和下面的頁面的ScrollView聯動的問題,以及上面導航欄的便宜量。

2.網易首頁導航封裝類優化中主要解決iOS7以上滑動返回功能中UIScreenEdgePanGestureRecognizer與ScrollView的滑動的手勢沖突問題。

今天仿今日頭條滑動導航和網易首頁導航封裝類優化相似,這個也是解決手勢沖突,UIPanGestureRecognizer與ScrollView的手勢沖突。

一、ViewController的層次

用上面的圖來介紹,左側的個人頁面ViewController上面通過addChildViewController添加了一個以MainViewController為RootViewController的

UINavigationController,通過addSubview將UINavigationController的View添加到個人頁面ViewController的View上。

二、仿今日頭條滑動導航主要有3個問題:

1.UIPanGestureRecognizer與ScrollView的手勢沖突

為了達到拖動滑動的效果,需要給MainViewController添加一個UIPanGestureRecognizer,由于底部是ScrollView和TableView組成的,所以會使UIPanGestureRecognizer與底部的沖突,和網易首頁導航封裝類優化類似需要在

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer中根據gestureRecognizer返回YES來使ScrolView和UIPanGestureRecognizer都識別。

2.UIPanGestureRecognizer滑動結束的位置不正確

用UIPanGestureRecognizer滑動根據便宜量來改變UINavigationController的View的位置,在今日頭條中滑動結束時UINavigationController的View要么在原位要么在右側,不會停在中間,這個問題讓我想起了之前做的果凍效果,手勢有狀態state,根據手勢的狀態來改變UINavigationController的View的位置,特別是在手勢結束時。

3.由于1使ScrolView和UIPanGestureRecognizer都識別,導致返回時ScrolView也會滑動

讓底部的ScrolView能滑動的時間應該是UINavigationController的View在初始位置frame的x為0,所以在它的frame的x>0時,底部的bottomScrollView的scrollEnabled=NO。

三、 主要實現代碼(導航的代碼就不貼了,只貼主要的)

1.聲明一個拖動手勢

@property(nonatomic,strong) UIPanGestureRecognizer *panGestureRecognizer;

2.為MainViewController添加手勢

_panGestureRecognizer=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGesture:)];_panGestureRecognizer.delegate=self;[self.navigationController.view addGestureRecognizer:_panGestureRecognizer]; 

3.手勢識別的方法

//平移-(void)panGesture:(UIPanGestureRecognizer*)pan{//在View中的位置// CGPoint point=[pan locationInView:self.navigationController.view];//在View中的移動量 以手指按下的為原點CGPoint point1=[pan translationInView:self.navigationController.view];if (pan.state==UIGestureRecognizerStateChanged&&pan==_panGestureRecognizer) {if (point1.x>0&&self.navigationController.view.frame.origin.x<self.navigationController.view.frame.size.width-100) {float x= self.navigationController.view.frame.origin.x+point1.x>self.navigationController.view.frame.size.width-100?self.navigationController.view.frame.size.width-100:self.navigationController.view.frame.origin.x+point1.x;self.navigationController.view.frame=CGRectMake(x, self.navigationController.view.frame.origin.y, self.navigationController.view.frame.size.width, self.navigationController.view.frame.size.height);NSLog(@"%@",NSStringFromCGRect(self.navigationController.view.frame));}else if(point1.x<0){NSLog(@"aaa %f",self.navigationController.view.frame.origin.x);float x=self.navigationController.view.frame.origin.x+point1.x<0?0:self.navigationController.view.frame.origin.x+point1.x;self.navigationController.view.frame=CGRectMake(x, self.navigationController.view.frame.origin.y, self.navigationController.view.frame.size.width, self.navigationController.view.frame.size.height);}}else if(pan.state==UIGestureRecognizerStateEnded){if (self.navigationController.view.frame.origin.x>self.navigationController.view.frame.size.width/3) {[UIView animateWithDuration:0.2 animations:^{self.navigationController.view.frame=CGRectMake(self.navigationController.view.frame.size.width-100, 0, self.navigationController.view.frame.size.width, self.navigationController.view.frame.size.height);} completion:^(BOOL finished) {self.bottomScrollView.scrollEnabled=YES;}];}else{[UIView animateWithDuration:0.2 animations:^{self.navigationController.view.frame=CGRectMake(0, 0, self.navigationController.view.frame.size.width, self.navigationController.view.frame.size.height);} completion:^(BOOL finished) {self.bottomScrollView.scrollEnabled=YES;}];}}//偏移量是增加的應該設為0[pan setTranslation:CGPointZero inView:self.navigationController.view];}

4.手勢沖突解決

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{if (self.bottomScrollView.contentOffset.x<=0.0&&gestureRecognizer==_panGestureRecognizer) {if (self.navigationController.view.frame.origin.x>0) {self.bottomScrollView.scrollEnabled=NO;}else{self.bottomScrollView.scrollEnabled=YES;}return YES;}return NO;}

四、效果圖

以上所述是小編給大家分享的IOS仿今日頭條滑動導航欄,希望對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品在线免费观看| 欧美疯狂xxxx大交乱88av| 成人夜晚看av| 亚洲最新av网址| 最近2019中文字幕在线高清| 国产精品成人久久久久| 国产精欧美一区二区三区| 亚洲第一区中文字幕| 日韩网站免费观看| 久久久久久久久久久国产| 性欧美xxxx| 国产日本欧美一区二区三区| 欧美成人一区在线| 欧美与黑人午夜性猛交久久久| 国产成人福利夜色影视| 成人h猎奇视频网站| 精品国产区一区二区三区在线观看| 日韩av在线网| 久久久久久av| 亚洲欧美变态国产另类| 亚洲久久久久久久久久| 国产日韩精品在线观看| 亚洲男人天堂2023| 国产精品成人品| 欧美又大粗又爽又黄大片视频| 国产欧美精品在线| 欧美激情一区二区三区久久久| 国产91在线播放九色快色| 久久久久日韩精品久久久男男| 亚洲日本欧美日韩高观看| 色一区av在线| 国产精品劲爆视频| 国产精品美女www爽爽爽视频| 亚洲欧美日韩第一区| 一区二区欧美在线| 久久在线免费观看视频| 亚洲小视频在线观看| 欧美性xxxxxxx| 日本成人精品在线| 欧美在线观看日本一区| 色www亚洲国产张柏芝| 亚洲性生活视频在线观看| 国产欧美日韩91| 色综合视频一区中文字幕| 中文字幕av一区中文字幕天堂| 最近2019年中文视频免费在线观看| 欧美激情在线观看| 亚洲欧美日韩精品久久| 91在线视频免费| 国语自产精品视频在线看抢先版图片| 欧美性生交xxxxx久久久| 国产在线视频91| 精品国产一区二区三区四区在线观看| 不卡av日日日| 最近更新的2019中文字幕| 精品久久久久久中文字幕| 国产精品女视频| 国产a级全部精品| 九色精品免费永久在线| 国产精品亚洲精品| 91视频国产一区| 色爱av美腿丝袜综合粉嫩av| 一本一本久久a久久精品牛牛影视| 亚洲国产成人91精品| 精品国产乱码久久久久久虫虫漫画| 欧美国产日产韩国视频| 91免费在线视频| 精品国产91久久久久久| 大荫蒂欧美视频另类xxxx| 91久久久在线| 日韩精品视频三区| 91影院在线免费观看视频| www.欧美免费| 亚洲成人激情图| 亚洲成人精品久久久| 九色精品美女在线| 久久av在线播放| 欧美一级黑人aaaaaaa做受| 神马国产精品影院av| 中文字幕日韩在线观看| www.日韩av.com| 国模视频一区二区三区| 国产福利精品av综合导导航| 国产香蕉97碰碰久久人人| 91牛牛免费视频| 国自产精品手机在线观看视频| 国产精品久久久久久久7电影| 美女扒开尿口让男人操亚洲视频网站| 精品国产成人av| 欧美重口另类videos人妖| www日韩中文字幕在线看| 亚洲国产成人爱av在线播放| 国产精品久久久久久久久久三级| 中文字幕日韩av电影| 日韩中文字幕亚洲| 国产91网红主播在线观看| 国产精品一区二区久久精品| 亚洲人永久免费| 欧美丰满老妇厨房牲生活| 91精品视频免费观看| 亚洲国产精品va在线看黑人动漫| 久久久91精品国产一区不卡| 亚洲欧美成人一区二区在线电影| 国产精品爽爽爽爽爽爽在线观看| 国产www精品| 国产精品91久久| 日本精品视频在线| 亚洲成人久久一区| 97视频com| yw.139尤物在线精品视频| 日本不卡免费高清视频| 欧美一区视频在线| 久久久成人精品| 国产精品自产拍在线观| 亚洲国产美女久久久久| 欧美日韩国产在线看| 亚洲成人激情图| 性视频1819p久久| 91欧美视频网站| 亚洲电影免费观看高清完整版| 成人久久久久爱| 欧美电影免费观看高清| 91精品啪在线观看麻豆免费| 欧美精品激情在线观看| 性欧美xxxx| 91精品91久久久久久| 亚洲国产成人爱av在线播放| 韩国19禁主播vip福利视频| 国产成人精品久久亚洲高清不卡| 久青草国产97香蕉在线视频| 亚洲激情国产精品| 日本欧美黄网站| 亚洲国产中文字幕在线观看| 国产精品免费在线免费| 久久人人爽人人爽人人片av高清| 国产精品入口夜色视频大尺度| 久久在线观看视频| 亚洲人成在线观看网站高清| 国产精品h在线观看| 91在线高清视频| 日韩av在线导航| 国产91精品久久久久久久| 国产欧美日韩最新| 国产99视频在线观看| 国产精品视频久久| 亚洲激情久久久| 精品人伦一区二区三区蜜桃网站| 少妇久久久久久| 夜夜嗨av色综合久久久综合网| 国产色婷婷国产综合在线理论片a| 日韩中文字幕在线免费观看| 欧美夫妻性生活xx| 久久久精品国产| 另类色图亚洲色图| 日韩视频在线免费| 欧美韩国理论所午夜片917电影| 国产精品女视频| 亚洲国产欧美在线成人app| 欧美激情乱人伦一区| 国产视频自拍一区| 国产精品日韩精品| 成人在线免费观看视视频| 亚洲一区二区免费在线| 欧美大片免费看|