Что касается первоначального вопроса: ваш класс размера ограничений автоматического макета кажется неправильным. Это приведет к тому, что ваше представление будет отображаться в одной комбинации ширины/высоты просто отлично, а в другой - полностью потерпит неудачу. Проектирование в любом классе размера, отличном от любого/любого, приведет к синей полосе класса размера в нижней части Xcode, указывающей/предупреждающей об этом.
Как правило, вы должны указать ограничения для каждого поддерживаемого класса размеров. Самый простой способ - просто создать свой вид в любом/любом классе. Таким образом, ваш макет будет одинаковым для всех конфигураций. Вы можете изменить указанные ограничения только для одного класса размера, а также просто выбрать этот класс размера и проверить ограничения представления, включить/отключить их или добавить новые. Они будут установлены только в этом конкретном классе размера. Чтобы просмотреть ограничение, вы можете либо выбрать его в раскадровке, либо дважды щелкнуть по нему в инспекторе размеров представления, к которому оно принадлежит. Последний раздел в инспекторе размеров ограничения сообщает, в каких классах размеров оно существует.
Перенос представления из одного класса размера в другой просто означает изменение этого класса размера для каждого представления и ограничения...
Вручную
Чтобы сделать это, вам нужно добавить размерный класс, на который вы хотите перейти, нажав +
рядом с флажком Installed
и щелкнув маленький значок x
слева от размерного класса, который вы хотите хотите мигрировать из. Если вы хотите перейти на любой/любой, не нажимайте на +
, просто установите флажок рядом с Installed
. И не забудьте не также изменить класс размера самого объекта представления. Если вы этого не сделаете, представление просто не будет представлено в нужном классе размеров.
Автоматический способ
Это также можно изменить, просмотрев исходный код файла раскадровки. Настройка ограничения может выглядеть так
<variation key="default">
<mask key="subviews">
<exclude reference="fTD-HZ-ZT3"/>
</mask>
<mask key="constraints">
<exclude reference="eyr-oK-LvV"/>
</mask>
</variation>
<variation key="heightClass=compact-widthClass=regular">
<mask key="subviews">
<include reference="fTD-HZ-ZT3"/>
</mask>
<mask key="constraints">
<include reference="eyr-oK-LvV"/>
</mask>
</variation>
Атрибут key
в элементе варианта, по-видимому, указывает размерный класс. Default
означает любой/любой. Было бы намного проще просто найти и заменить все вхождения класса размера, из которого вы хотите перейти, классом размера, в который вы хотите перейти. Если вы переходите с класса по умолчанию или на него, это немного сложнее, поскольку вам нужно изменить exclude
на include
и наоборот. Затем вам нужно будет добавить/удалить полный раздел класса размера, в который/из которого вы мигрируете. Немного больше работы, но все же намного проще, чем делать это вручную.
Однако вам следует быть осторожным, если ваше представление уже содержит спецификации классов размеров для нескольких классов размеров, чтобы изменить только правильные.
person
luk2302
schedule
01.04.2015