Новый дисплей iPhone 5 имеет новое соотношение сторон и новое разрешение (640 x 1136 пикселей).
Что требуется для разработки новых или перехода уже существующих приложений на новый размер экрана?
Что следует иметь в виду, чтобы сделать приложения «универсальными» как для старых дисплеев, так и для нового широкоэкранного соотношения сторон?
Если у вас есть приложение, созданное для iPhone 4S или более ранней версии, оно будет работать на почтовых ящиках на iPhone 5.
Чтобы адаптировать ваше приложение к новому более высокому экрану, первое, что вы должны сделать, это изменить образ запуска на: Default-568h@2x.png. Его размер должен быть 1136x640 (HxW). Да, наличие изображения по умолчанию в новом размере экрана - это ключ к тому, чтобы ваше приложение занимало весь экран нового iPhone 5 .
(Обратите внимание, что соглашение об именах работает только для изображения по умолчанию. При присвоении имени другому изображению «Image-568h@2x.png» оно не будет загружаться вместо «Image@2x.png». Если вам нужно загрузить разные изображения для разных размеров экрана вам придется делать это программно.)
Если вам очень повезло, это может быть так ... но, по всей вероятности, вам придется сделать еще несколько шагов.
В крайнем случае (когда ничего из вышеперечисленного недостаточно), спроектируйте две Xibs и загрузите соответствующую в контроллере вида.
Чтобы определить размер экрана:
источник
Единственное, что действительно необходимо сделать, это добавить образ запуска «Default-568h@2x.png» к ресурсам приложения, и в общем случае (если вам повезет) приложение будет работать правильно.
Если приложение не обрабатывает сенсорные события, убедитесь, что окно ключа имеет правильный размер. Обходной путь должен установить правильный кадр:
Существуют и другие проблемы, не связанные с размером экрана при переходе на iOS 6. Дополнительные сведения см. В примечаниях к выпуску iOS 6.0 .
источник
Иногда (для приложений до раскадровки), если компоновка будет достаточно отличаться, стоит указать другой xib в зависимости от устройства (см. Этот вопрос - вам потребуется изменить код для работы с iPhone 5) в viewController init, так как никакие изменения с масками авторазмера не будут работать, если вам нужна другая графика.
Это полезно для приложений, ориентированных на более старые версии iOS.
источник
Здесь вы можете найти хороший учебник (для MonoTouch, но вы можете использовать информацию и для не-MonoTouch-проектов):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-сегодня /
Создайте новое изображение для экрана-заставки / экрана по умолчанию ( 640 x 1136 пикселей ) с именем « Default-568h@2x.png». »
В iOS Simulator перейдите в меню «Оборудование -> Устройство» и выберите « iPhone (Retina 4-inch) ».
Создание других изображений, например фоновых изображений
источник
Легко переносить iPhone5 и iPhone4 через XIB .........
источник
Я решаю эту проблему здесь . Просто добавьте ~ 568h @ 2x суффикс к изображениям и ~ 568h к XIB. Не нужно больше проверок во время выполнения или изменения кода.
источник
Я добавил новое стартовое изображение по умолчанию и (при проверке нескольких других ответов SE) удостоверился, что все мои раскадровки автоматически изменили размеры самих себя и подпредставлений, но сетчатка 4 дюйма все еще была коробкой.
Затем я заметил, что в моем информационном списке есть позиция для « Launch image », установленная в « Default.png », которую я таким образом удалил, и магический почтовый ящик больше не появлялся. Надеюсь, это спасет кого-то еще от того же безумия, которое я пережил.
источник
Я предполагаю, что это не будет работать во всех случаях, но в моем конкретном проекте это позволило мне избежать дублирования NIB-файлов:
Где-то
common.h
вы можете сделать эти определения исходя из высоты экрана:В вашем базовом контроллере:
источник
В
constants.h
файл вы можете добавить эти определения операторов:источник
Чтобы определить, может ли ваше приложение поддерживать iPhone 5 Retina, используйте это: (Это может быть более надежным, чтобы вернуть тип дисплея, 4S Retina и т. Д., Но, как написано ниже, оно просто возвращает, если iPhone поддерживает iOS5 Retina как Да или нет)
В общий файл ".h" добавьте:
В общий файл ".m" добавьте:
источник
Прежде всего создайте две xibs и присоедините все делегаты, главный класс к,
xib
а затем вы можете поставить это условие, упомянутое ниже в вашемappdelegate.m
файле вВы можете использовать его в любом месте программы, в зависимости от ваших потребностей, даже в ваших
ViewController
классах. Самое главное, что вы создали дваxib
отдельных файла дляiphone 4(320*480) and iphone 5(320*568)
источник
Попробуйте метод ниже в одноэлементном классе:
источник
Вы можете использовать эту
Auto Layout
функцию и создать дизайн с разрешением экрана iPhone 5, и он будет работать как для 4-дюймовых, так и для 3,5-дюймовых устройств, но в этом случае у вас должно быть достаточно знаний менеджера компоновки.источник
Проверка
bounds
с568
не удастся в ландшафтном режиме. iPhone 5 запускается только в портретном режиме, но если вы хотите поддерживать ротацию, то iPhone 5 «чек» должен будет справиться и с этим сценарием.Вот макрос, который обрабатывает состояние ориентации:
Вызов «предпочитаемый режим» используется из другой публикации, которую я прочитал несколько часов назад, поэтому я не придумал эту идею.
источник
Сначала покажите это изображение. На этом изображении показано предупреждение о поддержке Retina 4, поэтому нажмите на это предупреждение и нажмите кнопку «Добавить», чтобы заставка Retina 4 автоматически добавлялась в ваш проект.
и после того, как вы используете этот код:
источник
Я никогда не сталкивался с такой проблемой ни с одним устройством, поскольку у меня была одна кодовая база для всех без каких-либо жестко закодированных значений. Что я делаю, так это чтобы в качестве ресурса использовалось изображение максимального размера вместо одного для каждого устройства. Например, я бы выбрал один для отображения сетчатки и отобразил бы его в качестве аспекта, чтобы он был таким же, как на каждом устройстве. Приходит к решению кадра кнопки, например, во время выполнения. Для этого я использую значение% в виде патента, например, если я хочу, чтобы ширина равнялась половине родительского вида, беру 50% от родительского, и то же самое относится к высоте и центру.
С этим мне даже не нужны XIBS.
источник
Вы можете использовать это определение для расчета, если вы используете iPhone 5 на основе размера экрана:
затем используйте простое
if
утверждение:источник
Питер, ты действительно должен взглянуть на Canappi, он делает все это за тебя, все, что тебе нужно сделать, это указать макет как таковой:
Оттуда Canappi сгенерирует правильный код target-c, который определяет устройство, на котором работает приложение, и будет использовать:
Canappi работает как Interface Builder и Story Board, за исключением того, что он находится в текстовой форме. Если у вас уже есть файлы XIB, вы можете преобразовать их, чтобы вам не пришлось заново создавать весь пользовательский интерфейс с нуля.
источник
Вы можете вручную проверить размер экрана, чтобы определить, на каком устройстве вы находитесь:
источник
Вы можете добавить этот код:
источник
scale
селектор,UIScreen
и у вас будет случай, когда ваш код «стандартного разрешения» не будет работать.Это настоящий универсальный код, вы можете создать 3 разных раскадровки:
Установите универсальный режим своего проекта и настройте основной сюжет iPhone с раскадровкой iPhone5 и ipad main с раскадровкой целевого iPad, теперь добавьте новую цель раскадровки для iphone и измените разрешение для iphone 4s или менее, теперь реализуйте свой AppDelegate.m
iPhone4 / 4s (то же самое для 3 / 3Gs) один для iPhone5 и делает проект универсальным , с новой целью Storyboard для iPad, теперь в AppDelegate.m под
didFinishLaunching
добавлением этого кода:Итак, вы создали универсальное приложение для iPhone 3 / 3Gs / 4 / 4s / 5 для всех поколений iPod и всех типов iPad
Не забудьте объединить все IMG с
myImage.png
иmyImage@2x.png
источник
По моему мнению, лучший способ справиться с такими проблемами и избежать пары условий, необходимых для проверки высоты устройства, - это использовать относительный фрейм для представлений или любой элемент пользовательского интерфейса, который вы добавляете в свой вид, например: если вы добавляете какой-то элемент пользовательского интерфейса, который вам нужен, должен располагаться внизу или чуть выше панели вкладок, тогда вам следует взять начало координат y относительно высоты вашего представления или относительно панели вкладок (если есть), и у нас также есть свойство автоматического изменения размера. Я надеюсь, что это будет работать для вас
источник
Вместо того чтобы использовать набор условных выражений, вы можете автоматически изменять размер вашего представления в зависимости от размера экрана.
В моем случае я хочу, чтобы представление заполняло пространство между полями ввода сверху и кнопками снизу, поэтому фиксированный верхний левый угол и нижняя правая переменная зависели от размера экрана. Мое приложение заполняет вид изображения фотографией, сделанной камерой, поэтому мне нужно все пространство, которое я могу получить.
источник
Если вам нужно преобразовать уже существующее приложение в универсальное, вам нужно выбрать соответствующий файл xib-> show Utilities-> Show Size inspector.
В Инспекторе размеров вы можете увидеть Авторазмер, с помощью этого инструмента вы можете конвертировать в существующее приложение для iOS.
источник
Используя xCode 5, выберите «Перенести в каталог активов» в Project> General.
Затем используйте «Показать в поиске», чтобы найти ваше изображение запуска, вы можете фиктивно отредактировать его до 640x1136, а затем перетащите его в каталог ресурсов, как показано на рисунке ниже.
Убедитесь, что в разделе iOS7 и iOS6 R4 есть изображение размером 640x1136. При следующем запуске приложения черные полосы исчезнут, и ваше приложение будет использовать 4-дюймовый экран.
источник
Обратите внимание: в новом Xcode вы должны добавить этот файл изображения Default-568h@2x.png в ресурсы
источник
Используйте
Auto Layout
функцию для просмотра. Он автоматически настроится на все разрешения.Создайте две xibs для контроллера с именем контроллера с суффиксом ~ iphone или ~ ipad. Во время компиляции Xcode получит правильный xib в зависимости от устройства.
Используйте классы размеров, если вы хотите создать один xib для iPhone и iPad, если представление достаточно простое для переноса на iPhone и iPad.
источник
При тестировании как на iOS-устройстве, так и на iOS-симуляторе возникает небольшая проблема. Похоже, что симулятор (XCode 6.0.1) выдает переключаемые значения для ширины и высоты в
[[UIScreen mainScreen] bounds].size
зависимости от ориентации устройства.Так что это может быть проблемой при определении правильного физического размера экрана. Этот код помогает также выделить все 2014 года. Модели iPhone:
Его также можно легко изменить, чтобы отличить, например, iPhone6 от iPhone6 +.
источник
Я бы посоветовал использовать Autoresizing Mask в ваших приложениях в соответствии с вашим интерфейсом интерфейса, это экономит много хлопот и лучше, чем создание разных интерфейсов для экранов iPhone 4 и 5.
источник