你可以将AutoLayout与UISplitViewController结合使用吗?

时间:2016-06-16 21:52:47

标签: ios iphone uisplitviewcontroller ios-autolayout

我已经成功创建了一个在iPhone上运行的应用程序(特征紧凑宽度),该应用程序使用UISplitViewController在屏幕的左侧实现菜单。它广泛使用Storyboard(具有23个视图/单位)和AutoLayout。我的目标是使用类似于Gmail应用程序和其他许多功能的功能。

enter image description here

当菜单在纵向模式下可见时,它占据了屏幕的80%,使细节/辅助视图仍然可见,但只有20%的屏幕。我使用viewWillLayoutSubviews& viewWillTransitionToSize设置splitViewController.preferredPrimaryColumnWidthFraction = 0.8;

引起我悲伤的问题或副作用是,所有使用AutoLayout的辅助视图都会在显示菜单时将所有内部视图按钮和标签压扁并叠加。

enter image description here

所以我的问题是:是否可以在UISplitViewController中使用AutoLayout而不产生压缩效果?我确定它是,所以我错过了什么,我需要做什么来欺骗AutoLayout系统而不是挤压布局,而只是将它滑出视野?

附录:在上面的屏幕截图中,带有蓝色导航栏的Secondary View是一个SettingsTableViewController.m。此代码不包含任何NSLayoutConstraints,也没有包含Main.storyboard的关联部分。按照评论中的建议:我找不到任何方法,在Main.storyboard的“Add New Contraint”弹出式菜单中选择superview,以便能够在“Table View”中添加“Equal Widths”约束”

enter image description here

因此,作为替代方案,我将以下代码添加到SettingsTableViewController.m中的viewDidLoad方法,但它没有任何效果。

self.view.superview addConstraint:[NSLayoutConstraint constraintWithItem:self.view
                                                                attribute:NSLayoutAttributeWidth
                                                                relatedBy:NSLayoutRelationEqual
                                                                   toItem:self.view.superview
                                                                attribute:NSLayoutAttributeWidth
                                                               multiplier:1
                                                                 constant:0]];

1 个答案:

答案 0 :(得分:1)

不减小主视图的宽度。你应该只是将主视图移到右边。