6

我在 Xcode 6.1 上开始了一个新的单视图项目,
转到我的目标并将Device Family 设置为 Universal并将Deployment 目标设置为 7.1

在情节提要中,我在 Size 类中放置了一个红色标签,Regular Width | Any Height 在 Size Class 中放置了一个蓝色标签Compact Width | Any Height

根据文档,在 ipad 上运行时我应该看到红色标签,在 iphone 上运行时应该看到蓝色标签,到目前为止,这在模拟器和实际设备上都按预期工作。

现在我回到目标并将Device Family 设置为 iPad,再次运行应用程序:

  1. 模拟器上的 iPad 2 (7.1) - 红色标签

  2. iPad 2 (7.1)(真实设备)-蓝色标签 ?!?!?

  3. iPad 2 (8.1)(真实设备)-红色标签

IPad Air/iPad mini 和我遇到的所有其他装有 IOS 7.1 的 iPad 也是如此

基本上我在通用故事板上看到了这一点,在 ios 7.1 中为 iPad 设置设备系列时,故事板被认为是紧凑的尺寸。我必须与 IOS 7.1 兼容,并且我的应用程序将首先仅针对 iPad 发布。有谁知道如何解决它?

编辑

根据Apple 文档:对于支持 iOS 8 之前的 iOS 版本的应用程序,大多数大小类都是向后兼容的。只要大小类向后兼容

  1. 该应用程序是使用 Xcode 版本 6 或更高版本构建的

  2. 应用部署目标早于iOS 8

  3. 大小类在情节提要或 xib 中指定

  4. 高度分量的值不紧凑

以上所有内容都适用于我的示例。

4

2 回答 2

0

我尝试比较在 xcode 构建文件夹中创建的中间文件,但据我所知,测试设备中没有依赖关系(这意味着只要我将部署目标设置为 7.1,它与哪个平台无关最终部署)所以我倾向于认为这不是 xcode 或 ios 7.1 中的错误,但实际上只是不向后兼容这个特定场景。

我向苹果技术支持提交了一个错误,但到目前为止没有得到他们的重播。在这一点上,解决方法似乎是将所有Regular width约束设置为Any width并卸载Compact width约束,一旦为 iPhone 发布应用程序,就撤消此更改。

于 2014-11-24T10:18:43.940 回答
0

模拟器VS。设备?我已经能够重现您在模拟器中报告的问题。

我认为您假设您的模拟器工作正常,因为它会产生您期望的输出,并且显示“错误”布局的是 iPad。然而,值得考虑的是 iPad 是否实际显示了您的配置的标准输出,即使该输出代表一个错误。Xcode 中的 Storyboard 预览显示了配置的正确行为,但在 iPad 2 (7.1) 的模拟器中以及在运行 iOS 7.1 时的其他 iPad 型号中确实不正确。在模拟器中可以看到 iOS 8.x 的预期行为。因此,这不是模拟器与设备的问题。我怀疑你在模拟器中看到不同结果的原因只是你没有完成干净的构建,因为一些关键的变化导致了这个,所以它仍然使用旧的 XIB,

问题的原因?您正在将项目的设备系列设置为仅针对 iPad,但在情节提要中包含Compact Width | Any Height一个尺寸等级,即 iPad 不应该使用的尺寸等级。这可能是触发此问题的配置的一个方面。也就是说,它仍然不应该发生。这个问题在 Xcode 6.1 中都会出现,并且在当前的 6.2 beta 中没有什么不同。

您当前配置的某个特定方面可能会触发此操作。特别是,自动布局和设备目标会以一些记录在案但通常是开发人员意想不到的方式受到启动屏幕的影响。(例如,使用故事板作为启动屏幕将默默地使您的应用程序普遍可用,即使您已在目标中指定它应该仅适用于 iPhone。)还有其他情况(请参阅此 Stack Overflow 问题和答案)进行迁移将图像启动到不同的配置已经解决了类似的问题。所以这值得一试。

于 2014-11-21T20:25:54.270 回答