【发布时间】:2017-06-05 04:23:28
【问题描述】:
我想在 iOS 10 中构建一个与联系人应用程序相同动画的视图控制器。 当您向下滚动页面时,联系人的照片会出现在导航栏的中间。
iOS 10 中有 API 还是自定义实现?
【问题讨论】:
标签: ios uinavigationbar
我想在 iOS 10 中构建一个与联系人应用程序相同动画的视图控制器。 当您向下滚动页面时,联系人的照片会出现在导航栏的中间。
iOS 10 中有 API 还是自定义实现?
【问题讨论】:
标签: ios uinavigationbar
研究
尝试修改导航栏的技术有很多。我花了很多时间一个接一个地尝试:
self.navigationController!.navigationBar.addSubview(self.titleView!) 但是这看起来很棒,它隐藏了导航栏元素和后退按钮不响应单击。即使我尝试了不同的图层或将视图置于前/后,我也无法完成这项工作。分辨率
因此,在我看来,最好的解决方案(但不是最清晰的解决方案)是:
self.navigationController!.isNavigationBarHidden = true in viewWillAppear(_ animated: Bool)。也不要忘记把它带回来viewWillDisappear(_ animated: Bool)
此解决方案要求您维护自己的“导航栏”,使其看起来与原生导航栏相同。不过,与导航栏修改不同,这可能会在未来的 iOS 版本中使用。
【讨论】:
一个技巧可能是使导航栏不可见。 在情节提要中设置 Simulated Metrics -> Top Bar = None(你甚至可以避免它)。
在您的视图控制器中将其添加到 viewDidLoad:
斯威夫特 3.0
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
目标-C
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
然后你应该在滑动 uitableview/uiscrollview 时创建一个动画,其中包含联系人的详细信息,这取决于你想要做什么......
【讨论】: