Конструктивное приложение, поддерживающее как iOS8, так и iOS7

Предположим, что я хочу создать приложение с основными деталями, шаблон проекта главной страницы Xcode6 для универсального приложения включает в себя UISplitViewController и splitViewController, новый в iOS8. Я хочу также поддерживать приложение для iOS7.

В общем

  • Каков наилучший способ разработки универсального приложения с помощью Xcode6 раскадровки, поддерживающие iOS8 и iOS7?
  • Лучше ли использовать отдельную панель для разной версии ОС?
  • Каковы наилучшие методы, которым мы должны следовать, чтобы приложение совместимо с обеими ОС?

Ответ 1

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

Но вполне возможно использовать единую универсальную раскадровку в Xcode 6, которая использует классы размера и все еще нацелена на iOS 7, как iPhone, так и iPad, используя UISplitViewController. Я успешно это сделал. Это потребовало большой работы, чтобы гарантировать, что она работает правильно и выглядела последовательной в iOS 7 и 8. Вы должны быть немного осторожны, когда дело доходит до выполнения различных новых адаптивных сегментов, так как это огромная разница между iOS 7 и 8 Например, при обнаружении, когда у вас есть popover, потребуется некоторая работа для двух разных ОС, для обработки разворачиваемых секций потребуется некоторая специальная обработка и т.д. Это потребует большого количества тестирования. Выделенное время для тестирования iPhone 6 Plus - в ландшафте он покажет как мастер, так и детали на экране, но вы можете контролировать это.

Пройдя этот опыт, я бы много реализовал единый раскадровки, а не две раскадровки, по одной для каждой ОС, и определенно держаться подальше от создания раскадровки для каждой ОС, а затем для каждый тип устройства.

Вы хотите прочитать в Руководство по совместимости SDK, чтобы узнать, как определить доступность API. Если вы реализуете API, который не существует в iOS 7, приложение будет аварийно завершено, поэтому вам нужно будет запускать этот код только в том случае, если эта функция существует для ОС, на котором запущено приложение. Например, вы можете использовать новый API UIBlurEffect, но этого не существует в iOS 7. Получите понимание того, что означает устаревание, и знание того, что изменилось в iOS 8, очень поможет. Например, API-интерфейсы вращения устаревают в пользу наборов признаков класса класса, но они недоступны в iOS 7, поэтому вам нужно будет продолжать использовать устаревший API вращения.

Также ознакомьтесь с некоторыми видео WWDC с этого года. У них есть несколько видеороликов, в которых обсуждаются новые адаптивные секреты и универсальные раскадровки. Обратите внимание, что эти раскадровки AVER обратно совместимы с iOS 7, но есть некоторые классы размеров, которые не доступны на iOS 7. См. этот вопрос и ответ, который я предоставил для больше информации. Видеоролики WWDC из предыдущих лет также обсуждают, как можно поддерживать несколько ОС, прогрессивное улучшение и т.д.

И, конечно, когда у вас есть вопросы/проблемы, Qaru - отличный ресурс. Многие вопросы, которые я опубликовал в последние несколько месяцев, точно связаны с этой темой, как изменить поведение UISplitViewController, получить поддержку для обеих ОС, используя единый раскадровки и новые адаптивные варианты и т.д. Вы можете пожелать прочитать их, чтобы получить представление о том, что вы можете ожидать при разработке приложения таким же образом.