我正在使用尺寸类来创建可以针对所有各种屏幕尺寸和方向的故事板。我一直在任何宽度 - 任何高度尺寸类中工作。我遇到了显示问题,并决定在 Compact Width - Regular Height 尺寸类中进行这些更改。后来,我能够通过对 Any Width-Any Height 尺寸类进行约束更改来解决我的布局问题。如何还原对 Compact Width - Regular Height 尺寸类所做的更改,以便在运行时使用 Any Width-Any Height 尺寸类,而无需手动还原更改?
2 回答
我有一个类似的问题,我在错误的尺寸类中为 iPad 编辑了一些约束(任何宽度 - 常规高度而不是常规宽度 - 常规高度),最终弄乱了纵向 iPhone 的布局。我最终编辑Base.lproj/Main.storyboard
并更改了适当的<variation>
条目以将约束移动到适当的大小类(在我的情况下,从<variation key="heightClass=regular" ..>
到<variation key="heightClass=regular-widthClass=regular ...>
。必须有更好的方法来做到这一点,但是这个快速破解解决了我在那个场合的问题。删除变化,删除相应的变体条目应该可以工作(但请确保您有备份,以防出现问题)。
XCODE7...
当我将其切换回“wAny hAny”大小时,在常规宽度(而不是“Any”)中添加的图像没有出现,我遇到了类似的问题。
我在 Main.storyboard 文件中发现,当以代码而不是视觉方式查看时,有问题的视图部分如下:
<variation key="default">
<mask key="subviews">
<exclude reference="bQ8-Fl-U5l"/>
<exclude reference="eyq-ch-Aan"/>
<exclude reference="pm5-gT-AYv"/>
<exclude reference="LJc-xi-hYb"/>
<exclude reference="y0y-l5-aTs"/>
<exclude reference="cLR-e1-OJo"/>
</mask>
<mask key="constraints">
</mask>
</variation>
<variation key="widthClass=regular">
<mask key="subviews">
<include reference="bQ8-Fl-U5l"/>
<include reference="eyq-ch-Aan"/>
<include reference="pm5-gT-AYv"/>
<include reference="LJc-xi-hYb"/>
<include reference="y0y-l5-aTs"/>
<include reference="cLR-e1-OJo"/>
</mask>
似乎该部分指的是“任意”案例,并且指的是我正在使用的特定尺寸等级(常规宽度,任意高度)。
为了修复它,我删除了从默认部分中排除的项目,并删除了已添加到常规部分的相同条目。代码的那部分看起来像......
<variation key="default">
<mask key="subviews">
</mask>
<mask key="constraints">
</mask>
</variation>
<variation key="widthClass=regular">
<mask key="subviews">
</mask>
似乎可以修复它。怪怪的,嗯?