IOS實(shí)現(xiàn)上滑隱藏NvaigtionBar而下拉則顯示效果
先看看原APP的效果

實(shí)現(xiàn)過(guò)程
主要是給view中的滾動(dòng)視圖添加一個(gè)KVO來(lái)監(jiān)視它的滑動(dòng),再根據(jù)它的offset來(lái)做一下操作,下面是代碼
[myTableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];
獲取tableView的 contentOffset 之后再根據(jù)具體需求來(lái)實(shí)現(xiàn)邏輯判斷
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if ([object isEqual:myTableView] && [keyPath isEqualToString:@"contentOffset"]) {
//獲取新值舊值
CGFloat newY = [change[@"new"] CGPointValue].y;
CGFloat oldY = [change[@"old"] CGPointValue].y;
float i = newY - oldY;//下拉是新值小于舊值的,所以i<0 是下拉 i>0 是上滑
NSLog(@"%f",myTableView.contentOffset.y);
if (myTableView.contentOffset.y > -64 && myTableView.contentOffset.y <= 24) {//邊界條件,此處不精確
if (i <= 0 && _isHide == NO && self.navigationController.navigationBar.frame.origin.y == 20){
//下拉+bar 已經(jīng)顯示的狀態(tài),不再移動(dòng)
return;
}
_isHide = NO;
//設(shè)置navigationbar 的frame 使他根據(jù)tableView來(lái)滑動(dòng)
self.navigationController.navigationBar.frame = CGRectMake(0, -44 - myTableView.contentOffset.y, self.view.bounds.size.width, 44);
//控制透明度
self.navigationController.navigationBar.alpha = -myTableView.contentOffset.y/64;
}else if (myTableView.contentOffset.y > 24) {
if (i > 10) {//更改數(shù)值大小可以控制觸發(fā) navigation bar 的滑動(dòng)速度
_isHide = YES;
}else if(i < -10) {
_isHide = NO;
}
}
[self.navigationController setNavigationBarHidden:_isHide animated:YES];
}
}
完成效果圖

總結(jié)
其實(shí)這個(gè)效果實(shí)現(xiàn)起來(lái)確實(shí)沒(méi)有什么難度,寫(xiě)這個(gè)主要是給大家看一下我的實(shí)現(xiàn)過(guò)程與思路,希望可以幫到大家。如果有疑問(wèn)可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS如何為導(dǎo)航欄添加播放動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了iOS如何為導(dǎo)航欄添加播放動(dòng)畫(huà)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
iOS應(yīng)用內(nèi)實(shí)現(xiàn)跳轉(zhuǎn)到手機(jī)淘寶天貓的方法
這篇文章主要給大家介紹了關(guān)于iOS應(yīng)用內(nèi)如何實(shí)現(xiàn)跳轉(zhuǎn)到手機(jī)淘寶天貓的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
iOS利用MJRefresh實(shí)現(xiàn)自定義刷新動(dòng)畫(huà)效果
本文主要介紹iOS 利用MJRefresh實(shí)現(xiàn)自定義動(dòng)畫(huà)的上拉刷新下拉加載效果,要想實(shí)現(xiàn)此功能,首先得有一套load的圖片數(shù)組。接下來(lái)通過(guò)本文給大家詳解介紹實(shí)現(xiàn)過(guò)程2017-02-02
iOS中CPU線(xiàn)程調(diào)試的高級(jí)技巧分享
這篇文章主要給大家介紹了關(guān)于iOS中CPU線(xiàn)程調(diào)試的高級(jí)技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
iOS開(kāi)發(fā)實(shí)現(xiàn)搜索框(UISearchController)
這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)實(shí)現(xiàn)搜索框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

