ios - 您可以将 AutoLayout 与 UISplitViewController 结合使用吗?

标签 ios iphone uisplitviewcontroller ios-autolayout

我已经成功创建了一个在 iPhone 上运行的应用程序(trait Compact width),它使用 UISplitViewController 在屏幕左侧实现一个菜单。它广泛使用 Storyboard(有 23 个 View /单元)和 AutoLayout。我的目标是实现类似于 Gmail 应用程序和许多其他应用程序的功能。

enter image description here

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

让我感到悲伤的问题或副作用是,所有使用 AutoLayout 的辅助 View 在显示菜单时都将其所有内部 View 按钮和标签压扁并覆盖。

enter image description here

所以我的问题是:是否可以在 UISplitViewController 中使用 AutoLayout 而不会产生压扁的效果?我确定是这样,那么我错过了什么,我该怎么做才能欺骗 AutoLayout 系统不挤压布局,而是将其滑出 View ?

附录:在上面的截图中,带有蓝色导航栏的二级 View 是一个 SettingsTableViewController.m。此代码不包含任何 NSLayoutConstraints,Main.storyboard 的相关部分也不包含。按照评论中的建议:我找不到任何方法,在 Main.storyboard 的“添加新约束”弹出菜单中选择 super View ,以便能够向“ TableView ”添加“等宽”约束".

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]];

最佳答案

不减少主视图的宽度。您应该将主视图向右移动。

关于ios - 您可以将 AutoLayout 与 UISplitViewController 结合使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37869952/

相关文章:

ios - SceneKit 支持的 OpenGL ES 3.0 子集是什么?

ios - 如何访问所有 NSLog 语句?

iphone - 在 View Controller 之间传递数组?

iphone - 如何在 Webview 中放置文本?

ios - 主 - 详细项目未按预期工作

ios - 静态 .a 库未构建给出体系结构 x86_64 的 undefined symbol ?

iphone - 在 iOS 中找不到框架 GoogleMaps sdk

iphone - iOS 中 UI 控件状态管理的设计模式

objective-c - 在 iOS8 中使用 UISplitViewController 隐藏主视图 Controller

ios - 在 Master 上点击新项目时从 Detail viewController 中关闭模态