UINavigationBar从大标题跳到小标题,同时推送到UIViewController与嵌入式UITableView iOS 11

UINavigationBar从大标题跳到小标题,同时推送到UIViewController与嵌入式UITableView iOS 11

问题描述:

正如从标题中说,当我试图推UIViewControllerUITableView在其中并显示LargeTitle,它显示了第一时间和然后隐藏到小的一个。UINavigationBar从大标题跳到小标题,同时推送到UIViewController与嵌入式UITableView iOS 11

这很奇怪,但是这个bug仅在4英寸设备上转载。

enter image description here

此行为似乎是一个苹果的错误

我错过了其他的解决办法或细微差别吗? 感谢您的任何建议。

Uploaded test project (GitHub)

解决办法,我发现到目前为止

  1. 附加UITableView的顶部SafeArea's顶部,但这种做法失去透明UINavigationBarLargeTitle崩溃的影响非常快上滚动
  2. 使用UITableViewController代替UIViewController+UITableView,但这种方法失去已知的灵活性。隐藏tableView或添加子视图不是微不足道的。
  3. pushViewController没有动画
+0

当您的视图控制器是UITableViewController'的'子类出现同样的问题。 另外,请不要建议他人避免'UITableViewController'。如果您的设计呈现有组织的信息行,并遵守Apple的人机界面指南,您可能*应该*使用它,并修改您的设计以充分利用它。 如果你“滚动你自己”('UIViewController + UITableView'),你将不得不不断增加代码来处理'UITableViewController'为你提供的越来越多的行为,或者发布一个不喜欢的应用它属于平台。 – macserv

+0

你如何“附加到SafeArea的顶部”? –

+0

@ErikAigner有两种方法可以这样做:1.您可以在Interface Builder中的File Inspector中激活安全区域复选标记,并从表视图顶部到安全区域顶部进行约束,或者2.在代码如view.safeAreaLayoutGuide.topAnchor中进行约束。约束(equalTo:tableView.topAnchor).isActive = true – Sander