iOS8 中的 UIViewController 自动布局
Posted
技术标签:
【中文标题】iOS8 中的 UIViewController 自动布局【英文标题】:UIViewController auto layout in iOS8 【发布时间】:2014-11-14 16:15:45 【问题描述】:将设备更新到 ios 8 后,会出现下一个布局问题。
我有一个 UITabBarController,它包含两个嵌入在 UINavigationController 中的 UITableViewController。这是主视图。
StoryBoard 中还设计了几个 UIViewControllers(未嵌入在 UINavigationViewControllers 中)。这些是次要观点。所有这些都将“在推送时隐藏底部栏”设置为“是”。设置约束来确定布局。
所有次要视图都显示为:
UIStoryboard* sb = [UIStoryboard storyboardWithName:STORYBOARD_NAME bundle:nil];
UIViewController* secondaryView = [sb instantiateViewControllerWithIdentifier:_name];
[navigationController pushViewController:secondaryView animated:YES];
在 iOS7 上一切正常。 但是在 iOS8 中出现二级视图控制器时会出现一些问题:
-
所有固定到底部的 UIView 会在错误的位置显示片刻,然后“跳转”到正确的位置。看起来第一个位置的计算包括底栏(由于“按下时隐藏”而隐藏)
如果有 UITableView 作为子视图:顶部固定的子视图再次显示在错误的位置片刻,然后“跳转”到正确的位置。看起来第一个位置的计算不包括导航栏的大小。如果我从控制器中删除 UITableView - 一切正常(第 1 页除外)
尝试为辅助视图设置模拟指标 - 没有帮助。
这些“跳跃”真的很烦人。非常感谢您的任何建议。
【问题讨论】:
【参考方案1】:从情节提要中隐藏标签栏时,我遇到了类似的跳跃问题。 确保您的底部子视图固定到超级视图而不是底部布局约束。
您必须从menu - Editor - Pin - Bottom Space to Superview
执行此操作,因为默认情况下Interface Builder
中的Auto Layout
菜单固定到Bottom Layout Constraint
。
【讨论】:
thx,问题确实出在 pin 上,但我也删除了 UITabBarController 并添加了简单的 UIViewController 和 UITabbar【参考方案2】:据我所知,iOS 8 的标签栏控制器与导航栏控制器混合存在问题。删除其中一个将使其再次正常运行。
【讨论】:
感谢您的回复,但我两个都需要。以上是关于iOS8 中的 UIViewController 自动布局的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS8 中未调用 UIViewController 设备旋转委托方法
UIViewController 动画过渡在 iOS8 中失败
等效 [UIPopoverController setContentViewController:(UIViewController *) 动画:(BOOL)];适用于 iOS8
尝试在 NavigationController 中推送多个 UIViewController 时出现 iOS8 问题