转载请注明原文链接:http://www.jianshu.com/p/b43113256ce1
我司产品🐶突然喜欢上了知乎
和简书
的的那种上滑加载更多时隐藏NavigationBar
,下拉时显示的那种效果。那些阅读类APP需要沉浸式体验
隐藏导航栏无可厚非,我就纳闷一个P2P类软件你隐藏个毛线!废话少说,技术很好实现几行代码的事。
在包含TableView
或者ScrollView
的.m文件中加入以下代码:
在页面即将消失时显示NavigationBar,让下一个页面显示时NavigationBar
显示状态:
//滑动隐藏导航栏 LiXingLe
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
}
实现ScrollView
的代理:
#pragma mark 滑动隐藏导航栏
//滑动隐藏导航栏 LiXingLe
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
[self.navigationController setNavigationBarHidden:velocity.y>0 animated:YES];
}
现在运行一下如果上滑的时候顶部没有变黑就OK了,如果NavigationBar 隐藏后顶部变黑,加上下面的代码,
在viewDidLoad
中添加:
//滑动隐藏导航栏 LiXingLe
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
觉得不错,下方记得点个“喜欢”哟!
更多iOS、Swift、逆向等开发精彩文章可以关注我的微信公众号乐Coding
。
你也可以扫描下方二维码关注我们。
网友评论
override func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
print("\(velocity.y)")
if(velocity.y>0)
{
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
else
{
self.navigationController?.setNavigationBarHidden(false, animated: true)
}
}
override func viewWillDisappear(_ animated: Bool)
{
super.viewWillDisappear(animated)
self.navigationController?.isNavigationBarHidden = false
}
```
extension HomeViewController : UINavigationControllerDelegate{
internal func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
let needHiden = viewController is HomeViewController || viewController is DMUserInfoViewController
self.navigationController?.setNavigationBarHidden(needHiden, animated: true)
}
}
```