我想构建一个与 iOS 10 中的联系人应用程序具有相同动画的视图控制器。
当您向下滚动页面时,联系人的照片会出现在导航栏的中间。
iOS 10 中有 API 还是自定义实现?
Research
有许多技术试图修改导航栏。我花了很多时间逐一尝试:
- 苹果官方教程https://developer.apple.com/library/content/samplecode/NavBar/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007418-Intro-DontLinkElementID_2 https://developer.apple.com/library/content/samplecode/NavBar/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007418-Intro-DontLinkElementID_2它只是在视觉上扩展了导航栏。事实上,把第二个
在栏下查看并将颜色和线条设置为看起来像
第二个视图是酒吧的一部分。但事实并非如此。
- Levelmoney 为自定义导航栏制作了很好的库:https://github.com/Levelmoney/ressized-navigation-bar https://github.com/Levelmoney/resizable-navigation-bar
- 另一个解决方案是创建你的视图,它看起来像导航栏(使用苹果示例中的背景色和阴影),然后将其放入导航栏,如下所示:
self.navigationController!.navigationBar.addSubview(self.titleView!)
然而,这看起来很棒,它隐藏了导航栏元素,并且后退按钮不响应单击。尽管我尝试了不同的图层或将视图带到前面/后面,但我无法完成这项工作。
解决
因此,我认为最好的解决方案(但不是最明确的)是:
- 创建您自己的自定义视图 (XIB),它看起来像导航栏本身 - 如上面的选项 3 所示。包括您自己实现的后退按钮等。
- 隐藏原来的导航栏:
self.navigationController!.isNavigationBarHidden = true
in viewWillAppear(_ animated: Bool)
。也别忘了把它带回来viewWillDisappear(_ animated: Bool)
- 将您自己的视图放在屏幕顶部。不在顶部布局指南下方,而是在屏幕顶部。您的视图将使状态栏变暗。使用视图的上边距使内容适合状态栏下方。
- 像他们所说的那样实现动画UITableView滚动事件 https://stackoverflow.com/questions/8642699/uitableview-scroll-event
该解决方案要求您维护自己的“导航栏”,使其看起来与本机导航栏相同。然而,与导航栏修改不同的是,这可能会在 iOS 的未来版本中起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)