Система раскадровкиВерсия 3.0 ведет себя как iPhone на iPad mini (7,9 дюйма), но не на iPad2 (9,7 дюйма)

Я использую Xcode 6.1 с OS X Yosemite и столкнулся с проблемой, связанной с раскадровкой. Раскадровка ведет себя как iPhone на iPad mini, но работает должным образом с iPad2. Эта проблема возникает только с Storyboard с версией systemVersion 3.0, но не с более ранней версией, такой как версия 2.0.

Ниже приведен скриншот моего iPad mini (я не хочу, чтобы раскадровка вел себя так) введите здесь описание изображения

а вот мой iPad2 9,7 дюйма (я хочу, чтобы это поведение было и для iPad mini) введите здесь описание изображения

Я хочу сделать это приложение только для iPad, поэтому моя конфигурация проекта выглядит следующим образом введите здесь описание изображения

но когда я изменяю его конфигурацию Устройство iPad на Универсальное, он работает должным образом как на iPad mini, так и на iPad2. Но я не хочу развертывать на iPhone.

введите здесь описание изображения

Вот мой Storyboard systemVersion 3.0 в виде исходного кода введите здесь описание изображения

и когда я изменяю systemVersion XML раскадровки на 2.0 и targetRuntime на iOS.CocoaTouch.iPad, он снова работает, как и ожидалось, как на iPad mini, так и на iPad2, но снова возникает проблема, когда я делаю немного изменения в раскадровке, такие как перемещение метки, кнопки или любого объекта на один пиксель, Xcode обновит systemVersion до версии 3.0, а targetRuntime — до iOS.CocoaTouch, что заставит раскадровку снова работать как iPhone на iPad mini. введите здесь описание изображения

Я не нашел решения через Интернет и себя тоже.


person Anand Suthar    schedule 07.11.2014    source источник
comment
Используете ли вы классы размеров в своей раскадровке?   -  person matt    schedule 19.11.2014
comment
Да, я использую классы autoLayout и size.   -  person Anand Suthar    schedule 19.11.2014
comment
Но в iOS 7 нет классов размеров... Так что ваша раскадровка несовместима с iOS 7. Вы не можете развернуть там. Это проблема.   -  person matt    schedule 19.11.2014
comment
ДА, спасибо, теперь все работает как положено. Но я не понимаю, почему он работает правильно, когда целевое устройство является универсальным с sizeClasses на iOS 7.1.   -  person Anand Suthar    schedule 20.11.2014
comment
Пожалуйста, удалите свой вопрос. То, что вы делали, было просто глупо и не стоило спрашивать об этом (конечно, не стоило вознаграждения).   -  person matt    schedule 20.11.2014


Ответы (2)


Вы можете использовать классы размера с более ранними версиями iOS, чем iOS 8. html#//apple_ref/doc/uid/TP40014436-CH13-SW1" rel="nofollow">в документации Apple указано:

Развертывание приложения с классами размера в более ранних версиях iOS

Для приложений, поддерживающих более ранние версии iOS, чем iOS 8, большинство классов размера обратно совместимы.

Классы размеров обратно совместимы, если:

  • Приложение создано с использованием Xcode версии 6 или более поздней.
  • Цель развертывания приложения более ранняя, чем iOS 8.
  • Классы размера указаны в раскадровке или xib
  • Значение компонента высоты не является компактным

XML-содержимое раскадровки не должно редактироваться напрямую. Это не решит ни одну из ваших проблем надежным способом, особенно если вы начнете изменять нумерацию версий, чтобы фактическое сгенерированное содержимое раскадровки было версией, отличной от того, что кажется из заголовка.

Похоже, то, с чем вы столкнулись, может быть ошибкой в ​​​​способе преобразования классов размеров для обратной совместимости, хотя в вашем вопросе отсутствует дополнительная информация о том, как вы на самом деле настроили свои классы размеров.

person Duncan Babbage    schedule 21.11.2014

Вы не можете использовать класс размера с iOS7, поскольку концепция класса размера была введена в iOS 8. Поэтому удаление этого класса размера из раскадровки будет работать для вас.

person Community    schedule 20.11.2014