Push segue 搞乱了约束
Posted
技术标签:
【中文标题】Push segue 搞乱了约束【英文标题】:Push segue is messing with constraints 【发布时间】:2014-06-03 16:08:17 【问题描述】:我有一个从我家UIViewController
到UITabBarController
的推送转场。我需要使用push segue,因为我需要在顶部有一个导航栏,并且我不能在导航控制器中嵌入UITabBarController
。
当我执行初始转场时,它会转到UITabBarController
,然后在导航栏下方和我的内容上方创建一个小边距。当我切换选项卡时,即使我切换回初始选项卡,也会删除此填充。然后,当我使用 Push Segue 的后退按钮时,我的根视图控制器失去了一些约束:我在这里有一个 collectionView,它向上推到页面上的一些按钮下方。
以前按钮有一个奇怪的变化,然后现在它们不动了,因为我修复了约束。但是,CollectionView
的限制似乎很好。
看起来更像是 CollectionView 内的项目正在向上移动,而不是 CollectionView 本身。这可能吗?我可以解决这个问题吗?
当我切换到 Modal segue 而不是 push 时,不会发生这种情况。 关于如何解决这个奇怪问题的任何建议?或者有人可以建议一个让模态转场为我的 TabViewController 工作的好方法吗?
谢谢!!
【问题讨论】:
【参考方案1】:我终于在这里修改了 Zsolt 勋爵的答案来解决这个问题。
- (void)viewDidLayoutSubviews
if (self.searchBar.frame.origin.y == 20)
[self.searchBar setFrame:CGRectMake(0, 0, self.searchBar.frame.size.width, self.searchBar.frame.size.height)];
[self.ptasksTable setFrame:CGRectMake(0, 44, self.ptasksTable.frame.size.width, self.ptasksTable.frame.size.height+20)];
我正在检查视图中第一项的原点是否为y=20
,如果是,请将 y 原点设置为 0,并将下面的 TableView
的大小增加 20 以填充空间。
【讨论】:
以上是关于Push segue 搞乱了约束的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 布局在 push segue 和 return 上搞砸了。 (iOS 8、Xcode beta 5、Swift)