Xcode 6.1 Interface Builder не показывает элементы в соответствии с типом устройства

Вчера вечером я работал с классами размеров в Интерфейсном Разработчике. Я создал новый файл xib и добавил две кнопки с заголовками «iPhone» и «iPad». По замыслу, кнопка «iPhone» должна быть видна на всех устройствах iPhone, а кнопка «iPad» - на всех устройствах iPad.

Все было нормально, на всех устройствах показывал ожидаемый результат.

Но проблема заключалась в том, что на iPad 2 (iOS 7.0.4) отображалась кнопка с заголовком «iPhone». Я тестировал следующие устройства, которые показывали правильный результат.

Устройства:

1) iPhone 3, 4 и 5.

2) iPad 2 (iOS 8.1.1)

Для этого я выполнил следующие шаги:

1) Создан новый файл контроллера представления с помощью xib. (Файл -> Создать -> Файл -> Класс касания какао -> Установите «Подкласс:» как (например) UIViewController и отметьте «Также создать файл XIB».)

2) Изменена панель Interface Builder на «wConpact hRegular».

3) Добавлена ​​кнопка с названием «iPhone» и ограничение, как она должна выглядеть горизонтально по центру и сверху 150 пикселей.

4) Изменена панель Interface Builder на «wRegular hRegular».

5) Добавлена ​​кнопка с названием «iPad» и ограничение, как она должна выглядеть горизонтально по центру и сверху 150 пикселей.

Я использую:

Xcode: 6.1

SDK на основе: 8.1

Цель развертывания: 6.1

Устройство: универсальное

Использовать автоматический макет: установлен

Использовать классы размеров: установлен

Скриншоты результатов:

1-й) iPhone 5s

2-й) iPad 2 (iOS 8.1.1)

3-й) iPad 2 (iOS 7.0.4)

iPhone 5s

iPad 2 (iOS 8.1.1)

iPad 2 (iOS 7.0.4)

Важно то, что нет проблем, если я использую для дизайна Storyboard. Я не понимаю, почему это происходит? Есть ли какое-либо свойство, которое мне не хватает, или его ошибка iOS?

Пожалуйста, предложите. Заранее спасибо.


person Avin    schedule 25.11.2014    source источник
comment
См. это   -  person Raptor    schedule 25.11.2014
comment
@Raptor ... спасибо, что поделились этой важной ссылкой. Это мне очень поможет.   -  person Avin    schedule 25.11.2014


Ответы (2)


Поскольку iOS 6 и 7 не поддерживают классы размера адаптивного макета, он будет использовать классы размера по умолчанию «Любой / Любой».

В вашем случае раскадровка считает, что класс размера по умолчанию имеет кнопку с надписью «iPhone» на нем, поэтому iPad с iOS 7 будет отображать версию для iPhone.

person Raptor    schedule 25.11.2014
comment
@Raptor ... спасибо за быстрый ответ. Но проблема в том, что он отлично работает в раскадровке, а не в xib. - person Avin; 25.11.2014
comment
Требуется пояснение: что сейчас в вашей раскадровке? - person Raptor; 25.11.2014
comment
То же содержимое, что и мой xib, отличается только имя контроллера представления. - person Avin; 25.11.2014

Согласно здесь Дэйва Делонга, я буду следовать этому

При развертывании приложения на iOS 7 Xcode компилирует раскадровку двумя способами:

1) Для iPhone раскадровка компилируется как «Компактная ширина, обычная высота».

2) Для iPad раскадровка компилируется как «wRegular-hRegular».

person Avin    schedule 25.11.2014