我正在使用 Xcode 6 和 iOS 8。该项目是从 iOS 5 开始编写的,而不是使用自动布局。因此,有大量的自动调整大小和大量通过操纵框架来移动控件和视图的代码。
我知道两者都可以使用,但是您是否进行了完整的转换,并消除了对框架属性的所有引用,还是只保留那些有效的?
例如,动态创建一个控件,该控件将放置在视图中,但不需要在该视图中操纵其位置。你会摆脱 initWithFrame: 并通过约束来完成它,还是直接离开它?
在我看来,两者可以共存,只要控件在创建和放置后是静态的。
我正在使用 Xcode 6 和 iOS 8。该项目是从 iOS 5 开始编写的,而不是使用自动布局。因此,有大量的自动调整大小和大量通过操纵框架来移动控件和视图的代码。
我知道两者都可以使用,但是您是否进行了完整的转换,并消除了对框架属性的所有引用,还是只保留那些有效的?
例如,动态创建一个控件,该控件将放置在视图中,但不需要在该视图中操纵其位置。你会摆脱 initWithFrame: 并通过约束来完成它,还是直接离开它?
在我看来,两者可以共存,只要控件在创建和放置后是静态的。
您可以在同一个项目甚至同一个视图控制器中混合使用自动布局和框架代码。如何迁移到仅使用自动布局取决于您。你有多少时间?现有的框架代码维护起来有多复杂?
我们在应用程序中采用的方法是创建一个故事板并向其添加视图控制器。我们将这些映射到我们现有的 VC 类,然后测试它们的外观。
我们开始用故事板中的视图替换在代码中创建的视图,使用约束来定位它们。对于表格视图,我们用情节提要中的原型单元格替换了许多定义自定义单元格的丑陋 .xib 文件。我们还用情节提要中的视图替换了表格页眉和页脚。
我们发现将整个视图控制器转换为全自动布局方法通常效果最好,从而消除对框架的任何使用。一些视图控制器具有非常复杂的框架逻辑,我们不去管它——我们甚至没有在故事板中定义这些。
总而言之,我们将大约 25 或 30 个视图控制器迁移到了故事板中,并且做得非常好。尽管偶尔会让人头疼,但我还是故事板和自动布局的忠实粉丝。它使我们向更大设备的过渡非常顺利。