国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS實現scrollview上拉顯示Navbar下拉隱藏功能詳解

2020-07-26 02:48:10
字體:
來源:轉載
供稿:網友

本文主要介紹的是關于iOS中scrollview上拉顯示Navbar下拉隱藏的相關內容,分享出來供大家參考學習,下面來看看詳細的介紹:

動畫效果:


關于下拉隱藏Nabbar,上拉顯示,有三種方式:推崇第一種,但是做的還是沒簡書、知乎那樣流暢,第一種是對navbar做了平移,第二種,第三種都是隱藏。。

方法如下:

第一種,和第二種處理時機一樣,但是效果更好,并沒有處理Navbar 的隱藏。

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ oldY = scrollView.contentOffset.y;}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  if (scrollView.contentOffset.y > oldY) {   [UIView animateWithDuration:0.3 animations:^{    self.navigationController.navigationBar.transform =    CGAffineTransformMakeTranslation(0, -64);   }];   ;  }else{   [UIView animateWithDuration:0.3 animations:^{    self.navigationController.navigationBar.transform =    CGAffineTransformIdentity;   }];  }}-(void)viewWillDisappear:(BOOL)animated{ self.navigationController.navigationBar.transform = CGAffineTransformIdentity;}

第二種:在開始拖拽的時候保存偏移量,結束拖拽的時候比較當前偏移量,判斷是否隱藏Navbar。

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ oldY = scrollView.contentOffset.y;}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  if (scrollView.contentOffset.y > oldY) {   [CATransaction begin];   [CATransaction setAnimationDuration:1.0];   [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];   //set the position   [self.navigationController setNavigationBarHidden:YES animated:YES];   [CATransaction commit];   ;  }else{   [CATransaction begin];   [CATransaction setAnimationDuration:1.0];   [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];    [self.navigationController setNavigationBarHidden:NO animated:YES];    [CATransaction commit];  }}

第三種: 是根據拖拽的velocity進行判斷,很霸道但是效果不如第一種,,隱藏的時機不對你可以做個比較;

-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{ if(velocity.y>0) {  [self.navigationController setNavigationBarHidden:YES animated:YES]; } else {  [self.navigationController setNavigationBarHidden:NO animated:YES]; }}最后選擇合適的時候恢復Navbar 的狀態,建議放在viewWillDisappear里,否則在進入下一個頁面里很突兀。-(void)viewWillDisappear:(BOOL)animated{ [self.navigationController setNavigationBarHidden:NO animated:YES];}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 犍为县| 于田县| 旌德县| 青川县| 兴和县| 新沂市| 抚顺市| 札达县| 普兰县| 江源县| 建宁县| 大渡口区| 广水市| 柘城县| 南投县| 左云县| 修水县| 庄浪县| 迁安市| 阿图什市| 方山县| 车险| 襄汾县| 西城区| 新野县| 察隅县| 敖汉旗| 广丰县| 永年县| 安义县| 元谋县| 运城市| 宣威市| 观塘区| 台南县| 桃江县| 会昌县| 吴旗县| 嘉鱼县| 突泉县| 浏阳市|