IOS 7.1,如果目标设备系列设置为iPad,则忽略通用故事板上的常规宽度限制

IOS 7.1,如果目标设备系列设置为iPad,则忽略通用故事板上的常规宽度限制,ios,objective-c,storyboard,ios-universal-app,size-classes,Ios,Objective C,Storyboard,Ios Universal App,Size Classes,我在Xcode 6.1上启动了一个新的单视图项目 转到我的目标并将设备系列设置为通用和部署目标设置为7.1 在故事板中,我在尺寸等级常规宽度|任意高度 尺寸等级紧凑宽度|任意高度的蓝色标签 根据文档,我在ipad上运行时会看到红色标签,在iphone上运行时会看到蓝色标签, 到目前为止,这在模拟器和实际设备上都能正常工作 现在我回到目标,将设备系列设置为IPad,再次运行应用程序: 模拟器上的iPad2(7.1)-红色标签 iPad2(7.1)(真实设备)蓝色标签 IPad 2(8.1)(真

我在Xcode 6.1上启动了一个新的单视图项目
转到我的目标并将设备系列设置为通用部署目标设置为7.1

在故事板中,我在尺寸等级
常规宽度|任意高度
尺寸等级
紧凑宽度|任意高度的蓝色标签

根据文档,我在ipad上运行时会看到红色标签,在iphone上运行时会看到蓝色标签, 到目前为止,这在模拟器和实际设备上都能正常工作

现在我回到目标,将设备系列设置为IPad,再次运行应用程序:

  • 模拟器上的iPad2(7.1)-红色标签

  • iPad2(7.1)(真实设备)蓝色标签

  • IPad 2(8.1)(真实设备)-红色标签

  • iPadAir/iPadMini和我遇到的每一款iOS7.1的IPad也是如此

    基本上,我在通用情节提要上看到,在ios 7.1中为IPad设置设备系列时,情节提要被认为是紧凑型的。 我必须与IOS 7.1兼容,而且我的应用程序一开始只能为IPad发布。 有人知道如何修复它吗

    编辑 根据: 对于支持iOS版本早于iOS 8的应用程序,大多数大小类都是向后兼容的。 大小类是向后兼容的,只要

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

  • 应用程序的部署目标早于iOS 8

  • 大小类在序列图像板或xib中指定

  • “高度”组件的值不紧凑

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

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

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

    问题的原因? 您正在将项目的设备系列设置为仅针对iPad,但在故事板中包含一个
    紧凑宽度|任意高度
    ,一个iPad绝对不能使用的尺寸等级。这可能是触发此问题的配置的一个方面。也就是说,它仍然不应该发生。这个问题在Xcode 6.1中都会出现,在当前的6.2测试版中没有什么不同


    当前配置的某个特定方面可能会触发此操作。特别是,自动布局和设备目标会受到启动屏幕的影响,这种影响有文档记录,但通常是开发人员意外的。(例如,在启动屏幕上使用故事板将使您的应用程序在静默状态下普遍可用,即使您已在目标系统中指定它应该是iPhone。)在其他情况下(请参阅),将启动映像迁移到不同配置解决了类似的问题。因此,这是值得尝试的。

    我尝试比较在xcode build文件夹中创建的中间文件,但据我所知,在测试设备中没有依赖性(这意味着只要我将部署目标设置为7.1,它最终将部署到哪个平台并不重要) 所以我倾向于认为这不是xcode或ios 7.1中的一个bug,但对于这个特定场景来说,它确实不向后兼容

    我为苹果的技术支持提交了一个bug,但到目前为止还没有得到他们的重播。
    在这一点上,解决办法似乎是将所有
    常规宽度
    约束设置为
    任何宽度
    ,并卸载
    压缩宽度
    约束,一旦为IPhone发布应用程序,就撤消此更改

    在重新运行之前,是否从实际设备中删除了应用程序?有时故事板文件不会被正确覆盖…是的,从设备中删除并进行了干净的构建如果您在iOS 7.1上使用Universal device Family运行项目,然后切换到iPad device Family,它将始终是正确的,但这并不能解决问题。使用通用故事板,只在项目部署设置中将目标设置为iPad是否有效?这样你就可以暂时避开这个可能的错误,而不必完全支持iPhone。我相信这正是我正在做的,我有一个通用的故事板,我将设备目标系列(在目标部署设置中,覆盖项目部署设置)设置为IPad。当目标设备系列为IPad时,无论是在目标“常规”选项卡还是“构建设置”选项卡中,我都会出现此问题。Duncan,我尝试按照您的建议迁移发布映像,但您共享的链接并未解决我的问题