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

首頁 > 系統 > iOS > 正文

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

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

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

動畫效果:

scrollview上拉加載,scrollview下拉回彈,ios,scrollview

關于下拉隱藏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];}

總結

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沅陵县| 民勤县| 康乐县| 靖宇县| 集安市| 黄冈市| 闵行区| 蓝田县| 通渭县| 镇赉县| 会宁县| 逊克县| 浮梁县| 五华县| 报价| 略阳县| 苏尼特右旗| 正定县| 德昌县| 绥滨县| 揭阳市| 丰镇市| 孝感市| 恩平市| 布尔津县| 菏泽市| 呈贡县| 弥勒县| 桂东县| 靖宇县| 尉犁县| 甘肃省| 兰溪市| 巴彦淖尔市| 屯昌县| 祁连县| 故城县| 甘南县| 镇安县| 九寨沟县| 平果县|