pushViewController 使用 hidesBottomBarWhenPushed (iphone6) 导致自动布局问题
Posted
技术标签:
【中文标题】pushViewController 使用 hidesBottomBarWhenPushed (iphone6) 导致自动布局问题【英文标题】:pushViewController cause autoLayout issue using hidesBottomBarWhenPushed (iphone6) 【发布时间】:2014-12-03 08:21:06 【问题描述】:我有一个 FirstViewController
和 TabBarController
和 NavigationController
(TabBarController > NavigationController > UIViewController)
在firstViewController
上按UIButton
时,会推送到SecondViewController
。
SecondViewController *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"BVC"];
vc2.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:vc2 animated:YES];
在SecondViewController
的右下角有一个UILabel
,带有约束 - (Width-Equal, Height-Equal, TrailingSpaceToSuperView = 16,BottomSpaceToBottomLayoutGuide = 20)
结果在 iphone4s(ios7) 上运行良好,但在 iphone6(IOS8.1) 上,UILabel
将首先出现在右下角加上大约 1 秒的“BottomBar 高度”,然后将更新到正确的位置( BottomSpaceToBottomLayoutGuide = 20)
当我将 pushViewController
动画设置为 NO 时,UILabel
将立即显示在正确的位置。
[self.navigationController pushViewController:vc2 animated:NO];
有人遇到同样的问题吗?
【问题讨论】:
当这种情况发生在我身上时,我会通过重置约束来修复它,或者我将它留给 XCOde 建议来应用约束 是的,谢谢您的建议。虽然,当涉及到屏幕按钮上的视图(Height-Equals TrailingSpace、LeadingSpace、bottomSpace)时,这个建议不起作用。 【参考方案1】:我已经解决了这个问题。选择 BottomSpaceToBottomLayoutGuide 约束的底部。
【讨论】:
隐藏在 Xcode 7 中,但仍然有效:***.com/questions/29021129/…【参考方案2】:@Jenny 的方法现在隐藏在 Xcode 7 中,但您可以将情节提要作为源代码打开,找到此约束并手动将其设置为“底部”。为了简化搜索,只需从 Identity Inspector 复制其 ObjectID。
【讨论】:
以上是关于pushViewController 使用 hidesBottomBarWhenPushed (iphone6) 导致自动布局问题的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI - 使用“pushViewController”时出现致命错误
在 UITabController 中的选项卡之间切换时使用“pushViewController”动画
使用 NavigationController.PushViewController 的 BeginAnimations 和 CommitAnimations
我可以将 pushViewController 与 UISegmentedControl 一起使用吗?
使用 Tabbar 管理 PushViewController
Monotouch:如何使用 NavigationController.PushViewController 更改视图更改的默认动画