【问题标题】:Migrating an existing app to support Adaptive Layout迁移现有应用程序以支持自适应布局
【发布时间】:2015-02-21 13:31:11
【问题描述】:
我已经阅读了有关自适应布局的博客,并且我已经完成了一些教程以在实践中看到它。我现在想尝试迁移现有的 iOS 应用程序以支持自适应布局/大小类。
在互联网上有很多关于自适应布局的信息,博客,教程等。但它们都是基于建立一个新项目。我似乎找不到有关如何迁移现有应用程序的分步指南。首先要采取哪一步,在哪里寻找第二步,要替换哪些代码(例如 initWithFrame)。
有人知道迁移现有应用程序时要遵循的某种指南吗?
提前致谢。
【问题讨论】:
标签:
xcode
ios8
size-classes
adaptive-layout
【解决方案1】:
应采取以下步骤:
首先,要在现有应用中采用自适应布局和通用情节提要,您需要将现有情节提要变成通用情节提要——一个可以处理任何屏幕尺寸的界面的情节提要。
打开故事板并转到信息面板并选中使用 Auto Layout 和 Use Size Classes 复选框。
其次,您需要启用全屏模式。
根据苹果:
在运行时,系统会查找故事板启动屏幕文件,以便让系统知道您的应用程序支持 iPhone 6 屏幕尺寸,包括应用程序包中的故事板启动屏幕文件
如果存在这样的文件,系统会假定您的应用明确支持 iPhone 6 和 6 Plus,并以全屏模式运行。
通过转到新文件...向您的应用添加新文件。在 iOS > 用户界面 中,有一个名为 Launch Screen 的新文件类型,它为您的应用添加了一个新的启动屏幕。
最后,转到项目的常规设置并为 Launch Screen File 字段选择新的 xib 文件。
编辑:
您还可以将您的应用图标和启动图片迁移到资产目录。
转到您项目的常规设置,然后点击 Use Asset Catalog 获取 App Icons Source。 Xcode 会要求您将应用程序图标迁移到资产目录并迁移现有的启动图像。
注意:如果您仍然支持 iOS 7 和/或更早版本,您仍然需要提供 4 英寸的启动图像。否则,您的应用将以 3.5 英寸模式显示。
【解决方案2】:
据我所知,迁移您的应用以支持自适应布局/尺寸类最有可能开始一个新项目。
按照步骤迁移您的应用。
- 在最新的 Xcode 中打开您的项目。
- 在情节提要中选择视图控制器。
- 在属性检查器中选择“大小”来推断。您的视图控制器将以方形尺寸显示。
- 现在根据您需要设置约束的尺寸等级。
来到你需要重写方法的代码
- (void)updateConstraintsForTraitCollection:(UITraitCollection *)collection
根据您需要以编程方式设置约束的大小类。
这里是示例代码。
- (void)updateConstraintsForTraitCollection:(UITraitCollection *)collection
{
if (collection.verticalSizeClass == UIUserInterfaceSizeClassCompact) {
//constraints for this specific class will go here
} else {
//default constraints
}
}
在此过程中,您唯一需要克服的就是设置 UI。除此之外,一切都像是开始一个新项目。
希望这对您有所帮助。 :)