XCode 8.2.1 Autolayout:繁忙,填充的UIViewControllers

时间:2017-01-25 03:37:24

标签: ios xcode ios-autolayout

我在XCode 8.2.1,Swift 3中有一个项目,我有很多UILabel,UIButtons和UITextFields显示了大量数据(基本上是表单)。该应用程序仅限iPad,仅限横向使用,目标是9.0及以上。

我尝试过手动分配约束(需要花费大量时间),并且我尝试过让IDE"添加缺失约束"和"重置为建议的约束条件"在故事板中。如果我从VC中删除所有约束,它将获得"形式"几乎是正确的,但有些事情仍然不合适。

我在viewDidLoad()或任何其他与定位相关的编码中都没有做任何事情。

以下是我的故事板的截图: enter image description here

这是与iPad Air 2(iOS版本10.2)模拟器中相同的UIViewController,具有建议的约束: Storyboard rendered using reset/suggested constraints

a)如何使用需要大量控制的自动布局,间距和对齐是必不可少的? b)为什么XCode调整我专门指定大小的按钮和控件?当故事板重新打开时,我必须不断调整大小。

感谢任何建议。精神错乱,我浪费了更多的时间来布局,而不是与7.3及更早版本相反的功能。

1 个答案:

答案 0 :(得分:1)

这是我如何在iPad应用程序中分解相当复杂的屏幕的示例。

enter image description here

主视图包含两个容器视图。左边的容器嵌入了一个UIableViewContoller,右边的容器嵌入了一个UIViewController。然后UIViewController本身嵌入另一个UITableViewController。每个控制器通过代表向容器链传递必要的更改。

这使我可以更好地控制每个容器部分中的布局,因为对于任何给定的控制器,处理的约束较少。

其次,可能你有一些mega控制器类来控制你在那里塞满的所有那些视图的所有逻辑。当你将它们分解为自己的控制器时,你可以将mega类分解为单独的类,只控制它们的UI部分,使代码更具可读性和封装性。