Выпуск iPhone 5 и iOS 6 вызвал большой интерес, но многие новые аппаратные и SDK-изменения могут оставить разработчиков iOS в замешательстве. Эта статья поможет вам поддерживать свои навыки в актуальном состоянии, предоставляя краткий обзор самых важных изменений для разработчиков iOS!
Совершенно новый дисплей
Первое, что вы, вероятно, заметите в iPhone 5, — это увеличенный размер экрана сетчатки. Это увеличение может быть измерено как в физическом пространстве экрана, так и в разрешении экрана. IPhone 4S имеет диагональ экрана 3,5 дюйма с разрешением 640×960 пикселей, в то время как у iPhone 5 экран диагональю 4 дюйма с разрешением 640×1136 пикселей.
Как пользователь, вы, вероятно, полюбите новый форм-фактор. Тем не менее, как программист, вы, возможно, немного съежились, когда впервые узнали, что вам потребуется поддержка дополнительного размера дисплея. Хотя новое разрешение, несомненно, создаст дополнительную работу для многих из нас в какой-то момент, хорошие новости заключаются в том, что iOS 6 SDK поставляется с новой системой автоматической компоновки, которая значительно упрощает разработку для нескольких размеров экрана (подробнее об этом позже).
Следующая диаграмма покажет вам, как новый дисплей iPhone 5 сочетается с другими устройствами iOS:
устройство | Размер дисплея | разрешение | PPI | Соотношение сторон |
iPhone | 3,5 «Диагональ | 320x480px | 163 PPI | 3: 2 |
iPhone 3G | 3,5 «Диагональ | 320x480px | 163 PPI | 3: 2 |
iPhone 3GS | 3,5 «Диагональ | 320x480px | 163 PPI | 3: 2 |
Ай фон 4 | 3,5 «Диагональ | 640x960px | 326 PPI | 3: 2 |
Айфон 4С | 3,5 «Диагональ | 640x960px | 326 PPI | 3: 2 |
iPhone 5 | 4 «Диагональ | 640x1136px | 326 PPI | 16: 9 |
IPad | 9,7 «Диагональ | 768x1024px | 132 PPI | 4: 3 |
iPad (2-е поколение) | 9,7 «Диагональ | 768x1024px | 132 PPI | 4: 3 |
iPad (3-е поколение) | 9,7 «Диагональ | 1536x2048px | 264 PPI | 4: 3 |
К счастью, вам не нужно полностью управлять этой сложностью самостоятельно. В 2011 году Apple представила систему Auto Layout System для Cocoa, а с iOS 6 теперь появилась и для Cocoa-Touch. Хотя Auto Layout еще не получил той же фанфары, что и другие функции iOS 6, это новое мощное усовершенствование, которое позволит вам быстро создавать интеллектуальные, гибкие макеты с использованием системы ограничений. Автоматическая компоновка является противоположностью жестко запрограммированной компоновке, где объекты интерфейса размещаются в определенных координатах X, Y. Вместо этого Auto Layout позволяет программистам описывать отношения между объектами почти в математических терминах, а затем iOS просто берет на себя все остальное и корректирует положение объекта по мере необходимости. Обратитесь к разделу « Введение в автоматическую компоновку» WWDC 2012 для более подробной информации.
Если у вас уже есть приложение для iPhone в магазине, вам необходимо срочно сделать один шаг — настроить приложение на использование полного экрана iPhone 5. Если вы этого еще не сделали, по умолчанию ваше приложение будет отображаться на устройствах iPhone 5 с дополнительным черным пространством вверху и внизу экрана. На следующем снимке экрана показано, как это будет выглядеть на снимках экрана, сделанных с iPhone 5:
В приведенном выше приложении Fandango полностью используется дисплей iPhone 5, а в приложениях Starbucks и Pandora — нет.
Вы должны обновить существующие приложения, чтобы заполнить весь экран iPhone 5.
Для большинства приложений iOS, созданных с использованием компонентов UIKit и использующих надлежащие маски авторазмера, процесс создания приложения на весь экран iPhone 5 так же прост, как добавление 4-дюймового изображения экрана запуска в ваш проект. Для получения более подробной информации, обратитесь к этому сообщению на StackOverflow .
Лучше, быстрее, сильнее: чип A6
Многие люди быстро забывают об этом, но чип Apple A6, встроенный в iPhone 5 , в два раза быстрее предыдущего поколения . Как программисты, наши приложения в конечном счете ограничены аппаратным обеспечением, на котором они работают. Это значительное повышение производительности позволит разработчикам создавать более сложные приложения, в том числе более продвинутые приложения дополненной реальности и более реалистичные 3D-игры. Самое приятное то, что, несмотря на скачок производительности, время автономной работы устройства также улучшилось!
В следующей таблице показано сравнение последних трех поколений систем на кристалле iPhone (SoC):
Выпуск | SoC | Макс. Частота часов | Процессорные ядра | Ядра GPU | L1 Cache | L2 Cache |
Ай фон 4 | Apple A4 | 1 ГГц | 1 | 1 | 32/32 кБ | 512 кБ |
Айфон 4С | Apple A5 | 800 МГц до 1 ГГц | 2 | 2 | 32/32 кБ | 1024 кБ |
iPhone 5 | Apple A6 | 1,25 ГГц | 2 | 3 | 32/32 кБ | 1024 кБ |
Новые Какао-Touch Рамки
Четыре новых фреймворка были добавлены в iOS 6 SDK.
The Pass Kit Framework
Приложение Passbook было одной из самых обсуждаемых функций iOS 6. Passbook позволяет пользователям приобретать и хранить на своем устройстве следующие четыре типа документов:
- Посадочные талоны
- Билеты на мероприятия
- Розничные купоны
- Карты магазина
Как описано в официальных документах Apple, приложение Passbook может быть разбито на следующие три части:
- Формат пакета для создания пропусков.
- API веб-сервиса для обновления пропусков, реализованный на вашем сервере.
- API Objective-C, используемый вашими приложениями для взаимодействия с библиотекой пропусков пользователя.
— Руководство по программированию Passbook
Как видите, реализация Passbook в ваших собственных приложениях предполагает интеграцию технологий на нескольких уровнях. Pass Kit отвечает за третий элемент в списке выше, предоставляя Objective-C API, который может взаимодействовать с пользовательской библиотекой пропусков.
Хотя для преодоления первоначальной кривой обучения Passbook может потребоваться некоторое время, на момент написания (23.09.12) в App Store было всего около десятка приложений с поддержкой Passbook. Это означает, что разработчики, которые работают быстро, могут помочь своим приложениям выделиться в магазине, став ранним приверженцем Passbook .
Для получения дополнительной информации о Passbook обязательно обратитесь к руководству по началу работы от Apple и, конечно же, к официальной документации .
Социальная структура
Когда вышла iOS 5, Apple значительно упростила разработчикам добавление поддержки Twitter в свои приложения через Twitter Framework. iOS 6 использует новый подход к интеграции в социальные сети с Social Framework. Идея очень похожа на проект с открытым исходным кодом ShareKit , в котором у этого пользователя есть меню, содержащее несколько вариантов обмена, и они могут свободно выбирать тот, который они хотят использовать. Тем не менее, что действительно выделяет Social Framework, так это то, что он интегрируется с Account Framework в целях реализации единого входа (SSO) и устранения повторяющихся входов в социальные сети несколько раз во многих различных приложениях.
Хотя я с нетерпением жду перехода на Социальную платформу, сейчас я, скорее всего, буду придерживаться ShareKit 2.0 из соображений прагматизма. Тем не менее, через год или два, я подозреваю, что Социальные рамки вытеснят необходимость для многих из нас прибегать к сторонним библиотекам для этой функции.
Структура поддержки рекламы и медиа-инструментов
Две новые платформы, которые остались незамеченными для многих, — это структура поддержки рекламы и платформа Media Toolbox. Структура поддержки рекламы, вероятно, станет стандартной для многих сторонних рекламных партнеров, поскольку она позволяет разработчику отправлять уникальный идентификатор пользователя для размещения рекламы. Он также имеет флаг для отказа от отслеживания рекламы, и разработчики должны проверять этот флаг во время выполнения, чтобы соблюдать настройки рекламы пользователя.
Среда Media Toolbox Framework — это низкоуровневое дополнение, которое добавляет новую поддержку звука в инфраструктуру AVFoundation, а полное объяснение можно найти в видео 517 сеанса WWDC 2012.
Улучшения и исправления Cocoa-Touch
Как и во всех новых выпусках ОС, в iOS 6 было введено много новых изменений, дополнений и устаревших версий. Некоторые из изменений, которые мне наиболее выделялись, выделены в этом разделе.
Улучшения UITableView
Многие новые изменения были внесены в работу UITableView
. Для начала метод UITableViewCell
dequeueReusableCellWithIdentifier
теперь заменен двумя новыми методами UITableView
dequeueReusableCellWithIdentifier:forIndexPath:
и registerClass:forCellReuseIdentifier:
Это было сделано с целью упростить способ UITableViewCell
объектов UITableViewCell
и их представления в табличном представлении.
Кроме того, появился новый класс UITableViewHeaderFooterView
для простого создания пользовательских UITableView
и нижних колонтитулов UITableView
. contentView
и backgroundView
этого класса допускают полную настройку, тогда как textLabel
и detailTextLabel
являются полезными ярлыками для создания минимально настраиваемых представлений верхнего или detailTextLabel
колонтитула.
Еще одним заметным улучшением табличных представлений является UIRefreshControl
. Этот элемент управления позволяет легко добавлять функциональность «тянуть-обновить» в представления таблицы.
Новые тематические опции UIKit
iOS 5 представила множество новых настроек для самых популярных элементов управления UIKit, а iOS 6 продвинула эту тенденцию на шаг вперед, предоставив еще больше возможностей для настройки интерфейса. Например, UIPopoverBackgroundView
, UIStepper
, UISwitch
, UINavigationBar
, UITabBar
, UIToolBar
, UIBarButtonItem
и UIPageControl
получили все дополнительные методы или свойства, связанные с управлением интерфейсом.
Как уже упоминалось выше, объекты UITableView
также стали легче оформлять с помощью настраиваемого класса представления верхнего / нижнего колонтитула. Табличные представления также получили два новых свойства интерфейса, специфичных для их тем: sectionIndexColor
и sectionIndexTrackingBackgroundColor
. Эти свойства позволяют лучше контролировать внешний вид индекса табличного представления.
Макеты на основе сетки с UICollectionView
Класс UICollectionView
предоставляет возможность изначально создавать макеты на основе сетки для iOS SDK. Это невероятно полезный класс, особенно на iPad, где отображение строк и столбцов представлений является обычным делом.
IPad-версии приложений Kindle и Reeder являются отличными примерами макетов на основе сетки, которые могли бы стать хорошими кандидатами для реализации с UICollectionView
:
Хотя вышеперечисленные приложения не были созданы с помощью UICollectionView, они представляют общий тип макетов, но этот элемент управления позволит разработчикам легче создавать.
Стилизованный текст с NSAttributedString
Любому, кто много работал с SDK, вероятно, приходилось сталкиваться с эстетическими ограничениями UILabel
и NSString
. Отображение простой простой строки с несколькими эстетическими изменениями, такими как жирный текст, подчеркивание гиперссылки и курсив подстроки, было заведомо громоздким, и многие прибегали к использованию нескольких экземпляров UILabel
или HTML и CSS в UIWebView
. iOS 6 делает это намного проще с введением NSAttributedString
и NSMutableAttributedString
. Эти новые классы точно так же, как их аналоги NSString
, с заметным исключением, что любой данный NSAttributedString
может иметь ряд дополнительных атрибутов, таких как подчеркивание, цвет фона, зачеркивание и т. Д. После создания новой приписанной строки вы можете назначить объект к любому классу, предлагающему поддержку атрибутных строк, включая UILabel
, UIButton
или UITableViewCell
.
Проблемы с автоповоротом
IOS 6 SDK использует новый подход к обработке автоматического поворота вида. Метод shouldAutorotateToInterfaceOrientation
которому мы все привыкли, устарел в пользу новой парадигмы, использующей shouldAutorotate
supportedInterfaceOrientationsForWindow:
и ряда методов shouldAutorotate
.
Кроме того, приложения, которые настроены только для альбомной ориентации, но вызывают контроллер только для портретного представления (т. Е. Экран входа в Game Center, UIPickerViewController
), фактически вызывают сбой приложения.
Вызов контроллера представления только для портрета из горизонтальной ориентации приведет к сбою приложения.
Для получения дополнительной информации по этой теме обязательно прочитайте примечания к выпуску iOS 6 под заголовком UIKit и подумайте о просмотре видео сеанса 240 WWDC 2012 под названием «Полировка вращений интерфейса» .
Новые возможности мобильного сафари
Как и следовало ожидать, Mobile Safari сделал еще один шаг вперед в HTML5 и поддержке связанных функций с последней версией. Хотя всесторонний обзор изменений выходит за рамки данной статьи, некоторые из основных моментов включают в себя:
- Доступ к камере с помощью API Media Capture и File API
- Увеличение локального кэша с 5 МБ до 25 МБ
- Новый веб-аудио API
- Дополнительная поддержка CSS3 (кроссфейд, фильтры и т. Д.)
- Встроенная поддержка изображений разных разрешений
- Удаленный веб-инспектор для упрощенной отладки
- Повышение производительности движка WebKit JavaScript
Помимо вышесказанного, стоит отметить одну важную проблему. Если у вас есть какие-либо приложения, которые включают UIWebView
со встроенным контентом YouTube, этот код больше не будет работать. Apple удалила приложение YouTube из iOS 6, и вместе с ним появилась поддержка воспроизведения по умолчанию, которую ранее могли предложить веб-представления. Я подозреваю, что это будет серьезной проблемой для многих разработчиков с приложениями, которые зависели от этой функции, и я, конечно, разочарован тем, что эта функция была удалена.
Видео YouTube, встроенные в UIWebView, больше не будут воспроизводиться.
Хотите узнать больше? Макс Фиртман выпустил великолепную разбивку всего вышеперечисленного и не только. Мы будем включать многие из этих новых функций и изменений в будущие руководства Mobiletuts +.
Новый пользовательский интерфейс для App Store
Этот момент еще не получил широкой огласки, но разработчики приложений должны знать о радикальных изменениях в пользовательском интерфейсе App Store, представленном в iOS 6. Ищете новые игры? Посмотрите на разницу между результатами поиска для термина «RPG» на iOS 5 / iPhone 4S и iOS 6 / iPhone 5:
Со старым интерфейсом вы можете легко увидеть 5 разных приложений в любое время и пролистать 25 разных приложений в течение нескольких секунд. Новый интерфейс отображает только один результат для каждого экрана и вынуждает пользователя выполнить уникальную прокрутку экрана, чтобы пролистывать каждое приложение.
Хотя в конечном итоге это дизайнерское решение является вопросом предпочтения, я думаю, что будет справедливо предположить, что эти изменения в App Store будут означать, что пользователи в целом сталкиваются с гораздо меньшим количеством приложений. Просто требуется слишком много времени, чтобы пролистать их один за другим. Вывод для разработчиков в том, что вам нужно будет стараться изо всех сил, чтобы быть замеченным, и вы обязательно должны сделать это на первом скриншоте!
Новый интерфейс App Store подчеркивает первый скриншот. Заставь это считать!
Насколько я лично разочарован новым интерфейсом App Store в целом, есть одна замечательная функция, которая может помочь разработчикам. Благодаря Social Framework пользователи теперь могут «делиться» всеми приложениями, которые они находят в магазине:
Я уверен, что большинство разработчиков по-прежнему решат включить кнопку «Поделиться» в свои приложения, но дополнительная информация здесь может помочь независимым разработчикам получить информацию о своих выпусках.
Где узнать больше
В iOS 6 внесено гораздо больше изменений, чем я могу описать в любой статье или руководстве. Эта статья просто освещает проблемы, которые мне больше всего понравились как разработчику iOS. Все будущие учебные пособия по iOS, опубликованные на Mobiletuts +, будут совместимы как с iPhone 5, так и с iOS 6. Мы также покажем вам, как заставить свои собственные приложения продолжать работать на устройствах с установленной iOS 5. У нас есть отличный контент, так что оставайтесь с нами!
Между тем, лучшим источником информации о iOS 6 остаются видеоролики сессий WWDC 2012 и официальная документация Apple . Вы также должны прочитать официальный пост « Что нового в iOS 6» и официальные заметки о выпуске iOS 6 . Не забудьте также просмотреть контрольный список iOS 6 и API Diffs .
И вот еще. , Если вы еще не видели введение Apple в iPhone 5, вам, вероятно, следует сделать это прямо сейчас:
Заворачивать
Планируете ли вы создавать приложения, использующие возможности iPhone 5? Дайте мне знать в разделе комментариев ниже. Не стесняйтесь оставлять любые другие отзывы, которые вы можете иметь на этот пост. Как всегда, вы также можете отправлять вопросы или комментарии в мою сторону через @markhammonds в Twitter или в своем недавно отчеканенном профиле Google+ .