iOS 8.0
Эта статья суммирует ключевые связанные с разработчиком функции, представленные в iOS 8, работающем на в настоящее время поставляющих устройствах на iOS. Статья также перечисляет документы, описывающие новые функции более подробно.
Для последнего экстренного сообщения и информации об известных проблемах, посмотрите iOS 8 Информации о версии. Для полного списка нового APIs, добавленного в iOS 8, посмотрите iOS 8.0 API Diffs. Для получения дополнительной информации о новых устройствах посмотрите Ссылку Совместимости устройства на iOS.
Расширения приложения
iOS 8 позволяет Вам расширить избранные области системы путем предоставления расширения приложения, которое является кодом, добавляющим пользовательскую функциональность в контексте пользовательской задачи. Например, Вы могли бы предоставить расширение приложения, помогающее пользователям отправить содержание на Ваш социальный веб-сайт совместного использования. После того, как пользователи устанавливают и включают это расширение, они могут выбрать его, когда они касаются кнопки Share в своем текущем приложении. Ваше пользовательское расширение совместного использования обеспечивает код, принимающий, проверяющий и отправляющий содержание пользователя. Система перечисляет расширение в меню совместного использования и инстанцирует его, когда пользователь выбирает его.
В XCode Вы создаете расширение приложения путем добавления предварительно сконфигурированной цели расширения приложения к приложению. После того, как пользователь устанавливает приложение, содержащее расширение, пользователь включает расширение в приложении Настроек. Когда пользователь выполняет другие приложения, система делает включенное расширение доступным в надлежащей системе UI, такой как меню Share.
iOS поддерживает расширения приложения для следующих областей, которые известны как точки расширения:
Доля. Содержание доли с социальными веб-сайтами или другими объектами.
Действие. Выполните простую задачу с выбранным содержанием.
Сегодня. Обеспечьте быстрое обновление или включите краткую задачу в представлении Today Центра Уведомления.
Фото редактирование. Выполните редактирования к фотографии или видео в фото приложении.
Поставщик услуг по хранению данных. Обеспечьте расположение хранения документов, к которому могут получить доступ другие приложения. Приложения, использующие контроллер представления средства выбора документа, могут открыть файлы, которыми управляет Поставщик услуг по хранению данных, или переместить файлы в Поставщика услуг по хранению данных.
Пользовательская клавиатура. Обеспечьте пользовательскую клавиатуру, которую пользователь может выбрать вместо системной клавиатуры для всех приложений на устройстве.
Каждая точка расширения определяет надлежащий APIs в своих целях. При использовании шаблона расширения приложения для начала разработки, Вы получаете цель по умолчанию, содержащую тупики метода и настройки списка свойств, определенные точкой расширения, которую Вы выбрали.
Для получения дополнительной информации о создании расширений см. Руководство по программированию Расширения Приложения.
Коснитесь аутентификации ID
Ваше приложение может теперь использовать Касание ID для аутентификации пользователя. В то время как другие, возможно, должны были бы защитить определенные данные или опции, некоторые приложения, возможно, должны защитить доступ ко всему их содержанию. В любом случае можно потребовать, чтобы пользователь аутентифицировал перед продолжением.
Ваше приложение может использовать Касание ID для разблокирования отдельных элементов цепочки для ключей. Для рабочей выборки посмотрите KeychainTouchID: Используя Касание ID с Цепочкой для ключей и LocalAuthentication.
Используйте платформу локальной аутентификации (
LocalAuthentication.framework)вывести на экран предупреждение пользователю с указанной приложением причиной того, почему пользователь аутентифицирует. Когда Ваше приложение получает ответ, оно может реагировать на основе того, смог ли пользователь успешно аутентифицировать. Для получения дополнительной информации посмотрите Ссылку Платформы Локальной аутентификации.
Фотографии
Сделайте лучшие фотографии в своем приложении, обеспечьте новые возможности редактирования для фото приложения и создайте новые, более эффективные потоки операций, получающие доступ к фотографии пользователя и видео активам.
Фото платформа
Фото платформа (Photos.framework) обеспечивает новый APIs для работы с фотографией и видео активами, включая фото активы iCloud, которыми управляет фото приложение. Эта платформа является более способной альтернативой платформе Библиотеки Активов. Главные особенности включают ориентированную на многопотоковое исполнение архитектуру для выборки и кэширования миниатюр и полноразмерных активов, запрашивая изменения в активах, наблюдая изменения, внесенные другими приложениями и resumable редактированием содержания актива.
Для получения дополнительной информации посмотрите фото Ссылку Платформы.
Используйте связанные фотографии платформа UI (PhotosUI.framework) создать расширения приложения для редактирования изображения и видео активов в фото приложении. Для получения дополнительной информации см. Руководство по программированию Расширения Приложения.
Ручное управление камерой
Платформа Основы AV (AVFoundation.framework) упрощает чем когда-либо делать большие фотографии. Ваше приложение может взять на себя прямое управление над фокусом камеры, балансом белого и настройками воздействия. Кроме того, Ваше приложение может использовать заключенные в скобки получения воздействия для автоматического получения изображений с различными настройками воздействия.
Для получения дополнительной информации см. Ссылку Платформы Основы AV.
Улучшенная функциональность камеры
Используйте следующий APIs, чтобы обнаружить и включить новые функции камеры, найденные на iPhone 6 и iPhone 6 Плюс:
Новое свойство (
videoHDRSupported) может определить, поддерживает ли устройство захвата изображения потоковую передачу расширенного динамического диапазона.Новый видео режим стабилизации (
AVCaptureVideoStabilizationModeCinematic) обеспечивает больше кинематографических результатов в полученном видео.Новое свойство (
highResolutionStillImageOutputEnabled) может использоваться для установкиAVCaptureStillImageOutputвозразите для получения неподвижных изображений в более высоком разрешении.Новое свойство (
autoFocusSystem) может использоваться, чтобы определить, как камера выполняет автоматическую фокусировку.
Игры
Технологические улучшения iOS 8 упрощают чем когда-либо реализовать графику Вашей игры и опции аудио. Используйте в своих интересах высокоуровневые платформы для простоты или используйте новые низкоуровневые улучшения для использования питания GPU.
Металл
Металл обеспечивает чрезвычайно низкий доступ к заголовку к A7 и A8 GPUs, включая чрезвычайно высокую производительность для Вашего сложного рендеринга графики и вычислительных задач. Металл устраняет много узких мест производительности — таких как дорогостоящая проверка состояния — которые найдены в традиционном графическом APIs. Металл явно разработан для перемещения всего дорогого перевода состояния и операций компиляции из критического пути большей части производительности чувствительный код рендеринга. Металл обеспечивает предварительно скомпилированные программы построения теней, объекты состояния и явную команду, планирующую гарантировать, что Ваше приложение достигает максимально возможной производительности и эффективности для Вашей графики GPU, и вычислите задачи. Эти принципы проектирования расширяются на инструменты, используемые для создания приложения. Когда Ваше приложение создается, XCode компилирует Металлические программы построения теней в проекте в библиотеку по умолчанию, устраняя большую часть стоимости во время выполнения подготовки тех программ построения теней.
Графика, вычислите и блитируйте команды, разработаны, чтобы использоваться вместе беспрепятственно и эффективно. Металл специально предназначен, чтобы использовать современные архитектурные соображения, такие как многопроцессорная и общая память, упростить параллелизировать создание команд GPU.
С Металлом Вы имеете оптимизированный API, объединенную графику и вычисляете язык штриховки и основанные на XCode инструменты, таким образом, Вы не должны изучать многократные платформы, языки и инструменты, чтобы в полной мере воспользоваться GPU в Вашей игре или приложении.
Для получения дополнительной информации об использовании Металла см. Металлическое Руководство по программированию, Металлическую Ссылку Платформы и Металлическое Руководство по Языку Штриховки.
SceneKit
SceneKit является платформой Objective C для создания простых игр и пользовательских интерфейсов большого приложения с 3D графикой, комбинируя высокоэффективный механизм рендеринга с высоким уровнем, дескриптивным API. SceneKit был доступен начиная с OS X v10.8 и теперь доступен в iOS впервые. APIs низшего уровня (такой как OpenGL ES) требует, чтобы Вы реализовали алгоритмы рендеринга, выводящие на экран сцену в точной подробности. В отличие от этого, SceneKit позволяет Вам описать свою сцену с точки зрения ее содержания — геометрия, материалы, световые сигналы, и камеры — тогда анимируют его путем описания изменений в тех объектах.
3D механизм физики SceneKit оживляет Ваше приложение или игру путем моделирования силы тяжести, сил, коллизий твердого тела и соединений. Добавьте высокоуровневые способы поведения, упрощающие использовать вертевшие механизмы, такие как автомобили в сцене и добавлять поля физики, применяющие радиальную силу тяжести, электромагнетизм или турбулентность к объектам в области эффекта.
Используйте OpenGL ES, чтобы представить дополнительное содержание в сцене или обеспечить программы построения теней GLSL, заменяющие или увеличивающие рендеринг SceneKit. Можно также добавить основанные на программе построения теней методы постобработки к рендерингу SceneKit, такие как цветная классификация или экранировать окружающее поглощение газов пространства.
Для получения дополнительной информации посмотрите Ссылку Платформы SceneKit.
SpriteKit
Платформа SpriteKit (SpriteKit.framework) добавляет новые опции, чтобы упростить поддерживать усовершенствованные игровые эффекты. Эти функции включают поддержку пользовательского OpenGL программы построения теней ES и освещение, интеграция с SceneKit, и усовершенствовали новые эффекты физики и анимации. Например, можно создать поля физики, чтобы моделировать силу тяжести, перетащить, и электромагнитные силы, использующие SKFieldNode класс. Можно легко создать организации физики с масками коллизии на пиксель. Даже если ее родитель не имеет собственной организации физики, и проще чем когда-либо прикрепить организацию физики к своему родителю. Эти новые функции физики делают сложные моделирования намного проще реализовать.
Используйте ограничения для изменения эффектов физики и анимаций на содержании сцены — например, можно заставить один узел всегда указать на другой узел независимо от того, куда перемещаются эти два узла.
Xcode 6 также включает новую программу построения теней и редакторов сцены, экономящих Вам время, поскольку Вы создаете свою игру. Создайте содержание сцены, указав, какие узлы появляются в сцене и характеристиках тех узлов, включая эффекты физики. Сцена тогда сериализируется к файлу, который может легко загрузить Ваша игра.
Для получения информации о классах этой платформы см. Руководство по программированию Ссылки и SpriteKit Платформы SpriteKit.
Механизм аудио AV
Платформа AVFoundation (AVFoundation.framework) добавляет поддержка широкого поперечного сечения аудио функциональности в более высоком уровне абстракции, чем Core Audio. Эти новые аудио возможности доступны и на OS X и на iOS и включают автоматический доступ к аудиовходу и выводят аппаратные средства, аудиозапись и воспроизведение, и парсинг аудиофайла и преобразование. Вы также получаете доступ к аудиоустройствам для генерации специальных эффектов и фильтров, подачи и управления скоростью воспроизведения, и 3D аудиосред стерео и инструментов MIDI.
Для получения дополнительной информации см. Ссылку Платформы Основы AV.
OpenGL ES
iOS 8 добавляет следующие новые расширения OpenGL ES.
Расширение APPLE_clip_distance добавляет поддержку аппаратных плоскостей клипа к OpenGL ES 2.0 и 3.0.
APPLE_texture_packed_float добавляет два новых формата текстур с плавающей точкой,
R11F_G11F_B10FиRGB9_E5.Расширение APPLE_color_buffer_packed_float основывается
APPLE_texture_packed_floatтак, чтобы новые форматы текстур могли использоваться объектом кадрового буфера. Это означает, что приложение может представить в кадровом буфере, использующем один из этих форматов.
Платформа HealthKit
HealthKit (HealthKit.framework) новая платформа для управления связанной со здоровьем информацией пользователя. С быстрым увеличением приложений и устройств для отслеживания здоровья и информации о фитнесе, для пользователей трудно получить ясное изображение того, как они делают. HealthKit упрощает для приложений делиться связанной со здоровьем информацией, прибывает ли та информация из устройств, подключенных к устройству на iOS, или вводится вручную пользователем. Информация о здоровье пользователя сохранена в централизованном и безопасном месте. Пользователь может тогда видеть все те данные, выведенные на экран в медицинском приложении.
Когда Ваше приложение реализует поддержку HealthKit, это получает доступ к связанной со здоровьем информации для пользователя и может предоставить информацию о пользователе, не будучи должен реализовать поддержку определенных устройств слежения фитнеса. Пользователь решает, какие данные должны быть совместно использованы с Вашим приложением. Как только данные совместно используются с Вашим приложением, Ваше приложение может зарегистрироваться, чтобы быть уведомленным, когда изменяются те данные; когда Ваше приложение уведомляется, Вы имеете тонкозернистый контроль. Например, запросите, чтобы Ваше приложение было уведомлено каждый раз, когда пользователи измеряют свое давление, или быть уведомленными только, когда измерение показывает, что кровяное давление пользователя слишком высоко.
Для получения дополнительной информации посмотрите Ссылку Платформы HealthKit.
Платформа HomeKit
HomeKit (HomeKit.framework) новая платформа для связи с и управления подключенными устройствами в доме пользователя. Новые устройства для дома предлагают больше связи и лучший пользовательский опыт. HomeKit обеспечивает стандартизованный способ для передачи с теми устройствами.
Ваше приложение может использовать HomeKit для передачи с устройствами, которые пользователи имеют в их домах. Используя Ваше приложение, пользователи могут обнаружить устройства в своем доме и сконфигурировать их. Они могут также действия по созданию для управления теми устройствами. Пользователь может действия группы вместе и инициировать их использование Siri. Как только конфигурация создается, пользователи могут пригласить других людей совместно использовать доступ к ней. Например, пользователь мог бы временно предложить доступ гостю дома.
Используйте Средство моделирования Аксессуара HomeKit для тестирования коммуникации приложения HomeKit с устройством.
Для получения дополнительной информации посмотрите Ссылку Платформы HomeKit.
iCloud
iCloud включает некоторые изменения, влияющие на поведение существующих приложений и того влияния пользователи тех приложений.
Связанная с документом миграция данных
Когда документы и данные передаются между устройствами пользователя и сервером, инфраструктура iCloud более устойчива и надежна. Когда пользователь устанавливает iOS 8 и журналы в устройство с учетной записью iCloud, сервер iCloud выполняет разовую миграцию документов и данных в учетной записи того пользователя. Эта миграция включает копирование документов и данных к новой версии контейнерного каталога приложения. Новый контейнер доступен только для устройств рабочий iOS 8 или OS X v10.10. Устройства, выполняющие более старые операционные системы, могут продолжать получать доступ к исходному контейнеру, но изменения, внесенные в том контейнере, не появляются в новом контейнере, и изменения, внесенные в новом контейнере, не появляются в исходном контейнере.
CloudKit
CloudKit (CloudKit.framework) кабелепровод для движущихся данных между Вашим приложением и iCloud. В отличие от других технологий iCloud, где передача данных происходит прозрачно, CloudKit дает Вам контроль, когда происходят передачи. Можно использовать CloudKit для управления всеми типами данных.
Приложения, использующие CloudKit непосредственно, могут хранить данные в репозитории, совместно использующемся всеми пользователями. Этот общедоступный репозиторий связывается к самому приложению и доступен даже на устройствах без зарегистрированной учетной записи iCloud. Как разработчик приложений, можно управлять данными в этом контейнере непосредственно и видеть любые изменения, внесенные пользователями через инструментальную панель CloudKit.
Для получения дополнительной информации о классах этой платформы, посмотрите Ссылку Платформы CloudKit.
Средство выбора документа
Средство выбора документа просматривает контроллер (UIDocumentPickerViewController) предоставляет пользовательский доступ к файлам вне песочницы Вашего приложения. Это - простой механизм для совместного использования документов между приложениями. Это также включает более сложные потоки операций, потому что пользователи могут отредактировать единый документ с многократными приложениями.
Средство выбора документа позволяет Вам файлы доступа от многих провайдеров документа. Например, провайдер документа iCloud предоставляет доступ к документам, хранившим в контейнере iCloud другого приложения. Сторонние разработчики могут обеспечить дополнительных провайдеров документа при помощи расширения Поставщика услуг по хранению данных.
Для получения дополнительной информации см. Руководство по программированию Средства выбора Документа.
Хэндофф
Хэндофф является функцией в OS X и iOS, расширяющем пользовательский опыт непрерывности через устройства. Хэндофф позволяет пользователям начать действие на одном устройстве, затем переключиться на другое устройство и возобновить то же действие на другом устройстве. Например, пользователь, просматривающий длинную статью в Safari, перемещается в устройство на iOS, это регистрировалось к тому же Apple ID, и та же веб-страница автоматически открывается в Safari на iOS с той же позицией прокрутки как на исходном устройстве. Хэндофф делает этот опыт максимально бесшовным.
Для участия в Хэндофф приложение принимает маленький API в Основе. Каждое продолжающееся действие в приложении представлено пользовательским объектом действия, содержащим данные, должен был возобновить действие на другом устройстве. Когда пользователь принимает решение возобновить, что действие, объект отправляется в возобновляющееся устройство. Каждый пользовательский объект действия сделал, чтобы делегат возразил, что это вызывается для обновления состояния действия в подходящие времена, такой как, непосредственно перед тем, как пользовательский объект действия отправляется между устройствами.
Если продолжение действия требует большего количества данных, чем легко передается пользовательским объектом действия, возобновляющееся приложение имеет опцию открыть поток для исходного приложения. Основанные на документе приложения автоматически продолжение поддерживающей деятельности для пользователей, работающих с основанными на iCloud документами.
Для получения дополнительной информации см. Руководство по программированию Хэндофф.
Поддержка новых размеров экрана и масштабов
Приложения, соединенные против iOS 8 и позже, должны быть подготовлены поддерживать больший размер экрана iPhone 6 и iPhone 6 Плюс. На iPhone 6 Плюс приложения должны также быть подготовлены поддерживать новый экранный масштаб. В частности приложения, поддерживающие OpenGL ES и Металл, могут также принять решение измерить свой рендеринг CAEAGLLayer или CAMetalLayer получить самую лучшую производительность на iPhone 6 Плюс.
Чтобы позволить системе знать что Ваши поддержки приложений размеры экрана iPhone 6, включайте экранный файл запуска раскадровки в пакет своего приложения. Во время выполнения система ищет экранный файл запуска раскадровки. Если такой файл присутствует, система предполагает, что Ваши поддержки приложений iPhone 6 и 6 Плюс явно и выполняют его в полноэкранном режиме. Если такое изображение не присутствует, система сообщает о меньшем размере экрана (или 320 480 точками или 320 568 точками) так, чтобы основанные на экране вычисления Вашего приложения продолжали быть корректными. Содержание тогда масштабируется для адаптации большему экрану.
Для получения дополнительной информации об указании изображений запуска для Вашего приложения, посмотрите Добавляющие значки приложения и Экранный Файл Запуска.
iOS 8 добавляет новые опции, делающие контакт с размером экрана и ориентацию намного больше универсальными. Проще чем когда-либо создать единственный интерфейс для Вашего приложения, работающего хорошо и над iPad и над iPhone, корректируясь к изменениям ориентации и различным размерам экрана по мере необходимости. Используя классы размера, можно получить общую информацию о размере устройства в его текущей ориентации. Можно использовать эту информацию для создания начальных предположений, о которых должно быть выведено на экран содержание и как те интерфейсные элементы связаны друг с другом. Затем используйте Автоматическое Расположение, чтобы изменить размеры и изменить местоположение этих элементов для адаптации фактическому размеру предоставленной области. Xcode 6 использует классы размера и авторасположение для создания раскадровок, адаптирующихся автоматически к изменениям класса размера и различным размерам экрана.
Черты описывают класс размера и масштаб интерфейса
Классы размера являются чертами, присвоенными элементу пользовательского интерфейса, такими как экран или представление. Существует два типа классов размера в iOS 8: регулярный и компактный. Регулярный класс размера обозначает или большую сумму экранного пространства, такой как на iPad, или обычно принимаемую парадигму, обеспечивающую иллюзию большой суммы экранного пространства, такого как прокрутка на iPhone. Каждое устройство определяется классом размера, и вертикально и горизонтально.
Рисунок 1 и рисунок 2 показывают собственные классы размера для iPad. С суммой экранного доступного пространства iPad имеет регулярный класс размера в вертикальных и горизонтальных направлениях и в портретных и в альбомных ориентациях.


Классы размера для iPhone отличаются на основе вида устройства и его ориентации. В портрете экран имеет компактный класс размера горизонтально и регулярный класс размера вертикально. Это соответствует парадигме общего использования прокрутки вертикально для получения дополнительной информации. Когда iPhone находятся в среде, их классы размера варьируются. Большинство iPhone имеет компактный класс размера и горизонтально и вертикально, как показано на рисунке 3 и рисунке 4. IPhone 6 Плюс имеет экран, достаточно большой для поддержки регулярной ширины в альбомном режиме, как показано на рисунке 5.



Можно изменить классы размера, связанные с целью. Когда меньшее представление содержится в большем представлении, эта гибкость особенно полезна. Используйте классы размера по умолчанию для расположения пользовательского интерфейса большего представления и информации о расположении в подпредставлении на основе любых классов размера, которые Вы чувствуете, является самым надлежащим тому подпредставлению.
Для поддержки классов размера следующие классы являются новыми или изменены:
UITraitCollectionкласс используется для описания набора черт, присвоенных объекту. Черты указывают класс размера, выводят на экран масштаб и идиому для определенного объекта. Классы, поддерживающиеUITraitEnvironmentпротокол (такой какUIScreen,UIViewControllerиUIView) владейте набором черты. Когда те черты изменяются, можно получить набор черты объекта и выполнить действия.UIImageAssetкласс используется для группировки как изображения вместе на основе их черт. Объедините подобные изображения с немного отличающимися чертами в единственный актив и затем автоматически получите правильный образ для определенного набора черты от актива изображения.UIImageкласс был изменен для работы с активами изображения.Классы, поддерживающие
UIAppearanceпротокол может настроить появление объекта на основе своего набора черты.UIViewControllerкласс добавляет возможность получить набор черты для дочернего представления. Можно также разметить представление путем изменения изменения класса размера черезviewWillTransitionToSize:withTransitionCoordinator:метод.
Xcode 6 поддерживает объединенные раскадровки. Раскадровка может добавить или удалить представления и ограничения макета на основе класса размера, в котором выведен на экран контроллер представления. Вместо того, чтобы поддерживать два отдельных (но подобный) раскадровки, можно сделать единственную раскадровку для многократных классов размера. Во-первых, разработайте свою раскадровку с единым интерфейсом и затем настройте ее для различных классов размера, адаптировав интерфейс к сильным местам каждого форм-фактора. Используйте Xcode 6 для тестирования приложения во множестве классов размера и размеров экрана, чтобы удостовериться, что интерфейс адаптируется к новым размерам должным образом.
Поддержка новых экранных масштабов
IPhone 6 Плюс использование новая Сетчатка HD выводит на экран с очень высоким экраном DPI. Для поддержки этого разрешения iPhone 6 Плюс создает a UIScreen объект с размером экрана 414 x 736 точек и экранный масштаб 3.0 (1242 x 2 208 пикселей). После того, как содержание экрана представляется, UIKit выбирает это содержание вниз для адаптации фактическим экранным размерностям 1080 x 1920. Для поддержки этого поведения рендеринга включайте новые иллюстрации, разработанные для нового 3x экранный масштаб. В Xcode 6 каталоги актива могут включать изображения в 1x, 2x, и 3x размеры; просто добавьте новые активы изображения, и iOS выберет корректные активы при работе iPhone 6 Плюс. Поведение загрузки изображения в iOS также распознает @3x суффикс.
В графическом приложении, использующем Металл или OpenGL ES, содержание может быть легко представлено в точных размерностях дисплея, не требуя дополнительного этапа выборки. Это критически важно в высокоэффективных 3D приложениях, выполняющих много вычислений для каждого представленного пикселя. Вместо этого создайте буферы для рендеринга в этом, точное разрешение дисплея.
A UIScreen объект обеспечивает новое свойство (nativeScale) это обеспечивает собственный экранный масштабный коэффициент для экрана. Когда nativeScale свойство имеет то же значение как экранscale свойство, тогда представленные пиксельные размерности совпадают с собственными пиксельными размерностями экрана. Когда два значения будут отличаться, тогда можно ожидать, что содержание будет выбрано, прежде чем они будут выведены на экран.
Если Вы пишете OpenGL приложение ES, a GLKView объект автоматически создает свои объекты renderbuffer на основе размера представления и значения его contentScaleFactor свойство. После того, как представление было добавлено к окну, установил представление contentScaleFactor к значению, сохраненному на экране nativeScale свойство, как показано в Перечислении 1.
Перечисление 1 , Поддерживающее собственный масштаб в объекте GLKView
- (void) didMoveToWindow |
{ |
self.contentScaleFactor = self.window.screen.nativeScale; |
} |
В Металлическом приложении Ваш собственный класс представления должен иметь код, подобный коду, найденному в Перечислении 1. Кроме того, каждый раз, когда размер Вашего представления изменяется, и до выяснения у Слоя металла для нового drawable, вычислите и установите слой металла drawableSize свойство как показано в Перечислении 2. (OpenGL приложение ES, создающее его собственный renderbuffers, использовал бы подобное вычисление.)
Перечисление 2 , Корректирующее размер Слоя металла для соответствия собственный экранный масштаб
CGSize drawableSize = self.bounds.size; |
drawableSize.width *= self.contentScaleFactor; |
drawableSize.height *= self.contentScaleFactor; |
metalLayer.drawableSize = drawableSize; |
См. MetalBasic3D для рабочего примера. Шаблоны XCode для OpenGL ES и Металл также демонстрируют эти те же методы.
Дополнительные изменения платформы
В дополнение к существенным изменениям, описанным выше, iOS 8 включает другие улучшения.
Модернизация API
Много платформ на iOS приняли небольшие интерфейсные изменения, использующие в своих интересах современный синтаксис Objective C:
Методы получателя и методы установщика заменяются свойствами в большинстве классов. Код с помощью существующего метода get и методов установщика продолжает работать с этим изменением.
Методы инициализации обновляются для имения возвращаемого значения
instancetypeвместоid.Определяемые инициализаторы объявляются как таковые, где это необходимо.
В большинстве случаев эти изменения не требуют никакой дополнительной работы в Вашем собственном приложении. Однако можно также хотеть реализовать эти изменения в собственном коде Objective C. В частности можно хотеть модернизировать код Objective C для лучшего опыта при взаимодействии с Кодом SWIFT.
Для получения дополнительной информации посмотрите Принятие современного Objective C.
Платформа основы AV
Платформа Основы AV (AVFoundation.framework) позволяет Вам получать метаданные в течение долгого времени при съемке фильма. Произвольные типы метаданных могут быть встроены с видеозаписью в различные моменты времени. Например, Вы могли бы записать текущее физическое расположение в видео, создаваемом движущимся устройством камеры.
Для получения информации о классах этой платформы см. Ссылку Платформы Основы AV.
Платформа AVKit
Платформа AVKit (AVKit.framework) ранее представленный на OS X доступно на iOS. Используйте его вместо платформы Медиапроигрывателя, когда необходимо будет вывести на экран видео.
Платформа CoreAudioKit
Новая платформа CoreAudioKit упрощает усилие, требуемое создать пользовательские интерфейсы для приложений, использующих в своих интересах аудио межприложения.
Базовая платформа изображения
Базовая платформа Изображения (CoreImage.framework) имеет следующие изменения:
Можно создать ядра пользовательского изображения в iOS.
Базовые детекторы изображений могут обнаружить прямоугольники и QR-коды в изображении.
Для получения информации о классах этой платформы посмотрите Базовый Ссылочный Набор Изображения.
Базовая платформа расположения
Базовая платформа Расположения (CoreLocation.framework) имеет следующие изменения:
Можно определить, которые ставят в тупик устройство, идет, если устройство находится в многоэтажном здании.
Служба посещения обеспечивает альтернативу значительной службе изменения расположения для приложений, для которых нужна информация о расположении об интересных местах, которые посещает пользователь.
Для получения информации о классах этой платформы посмотрите Базовую Ссылку Платформы Расположения.
Базовая платформа движения
Базовое Движение обеспечивает два новых класса (CMAltimeter и CMAltitudeData) которые позволяют Вам получать доступ к барометру на iPhone 6 и iPhone 6 Плюс. На этих двух устройствах можно также использовать a CMMotionActivity объект определить, является ли пользователь на велосипеде.
Платформа основы
Платформа Основы (Foundation.framework) включает следующие улучшения:
NSFileVersionкласс обеспечивает доступ к прошлым версиям документов iCloud. Эти версии сохранены в iCloud, но могут быть загружены по запросу.NSURLподдержки класса, хранящие миниатюры документа как метаданные.NSMetadataQueryкласс может искать внешние документы iCloud, которые открыло Ваше приложение.
Платформа игрового контроллера
Платформа Игрового контроллера (GameController.framework) имеет следующие изменения:
Если контроллер присоединен к устройству, можно теперь получить данные движения устройства непосредственно от платформы Игрового контроллера.
Если Вы работаете с вводами кнопки и не заботитесь о чувствительности к давлению, новый обработчик может вызвать Вашу игру только когда нажатые изменения состояния кнопки.
Платформа GameKit
Платформа GameKit (GameKit.framework) имеет следующие изменения:
Опции, добавленные в iOS 7, доступны на OS X 10.10, упрощая использовать эти функции в межплатформенной игре.
Новое
GKSavedGameкласс и новые методы вGKLocalPlayerупростите сохранять и восстанавливать прогресс пользователя. Данные хранятся на iCloud; GameKit выполняет необходимую работу для синхронизации файлов между устройством и iCloud.Методы и свойства, использующие строки идентификатора проигрывателя, теперь осуждаются. Вместо этого используйте
GKPlayerобъекты идентифицировать проигрыватели. Заменяющие свойства и методы были добавлены, которые берутGKPlayerобъекты.
Платформа iAd
iAd платформа (iAd.framework) добавляет следующие новые опции:
При использовании Набора AV для игры видео, можно играть рекламные объявления перед рулоном, прежде чем будет играться видео.
Можно искать больше информации об эффективность рекламных объявлений для приложения.
Для получения информации о классах этой платформы см. iAd Ссылку Платформы.
Платформа медиапроигрывателя
Две платформы Медиапроигрывателя (MediaPlayer.framework) классы расширяются с помощью новой информации о метаданных.
Для получения информации о классах этой платформы посмотрите Ссылку Платформы Медиапроигрывателя.
Платформа расширения сети
Используйте новую платформу Расширения сети (NetworkExtension.framework) сконфигурировать и управлять виртуальными частными сетями (VPN).
Изменения платформы SpriteKit
Платформа SpriteKit (SpriteKit.framework) добавляет много новых опций:
SKShapeNodeобъект может указать текстуры, которые будут использоваться, когда форма или перечеркивается или заполняется.SKSpriteNode,SKShapeNode,SKEmitterNode, иSKEffectNodeклассы включают поддержку пользовательского рендеринга. ИспользуйтеSKShaderиSKUniformклассы, чтобы скомпилировать OpenGL ES программа построения теней фрагмента на основе 2.0 и предоставить входные данные программе построения теней.SKSpriteNodeобъекты могут предоставить информацию освещения так, чтобы SpriteKit автоматически генерировал эффекты освещения и тени. ДобавитьSKLightNodeобъекты к сцене, чтобы указать световые сигналы, и затем настроить свойства на этих световых сигналах и любых спрайтах, чтобы определить, как освещена сцена.SKFieldNodeкласс обеспечивает специальные эффекты физики, можно примениться к сцене. Например, создайте магнитные поля, добавьте, перетаскивают эффекты, или даже генерируют рандомизированное движение. Все эффекты ограничиваются к определенной области сцены, и можно тщательно настроить и силу эффекта и как быстро эффект ослаблен расстоянием. Полевые узлы упрощают заглядывать эффекту, не имея необходимость искать весь список организаций физики и применять силы к ним.Новое
SK3DNodeкласс используется для интеграции сцены SceneKit в игру как спрайт. Каждый раз, когда SpriteKit представляет Вашу сцену, он представляет 3D узел сцены сначала для генерации текстуры, затем использует ту текстуру для рендеринга спрайта в SpriteKit. Создание 3D спрайтов может помочь Вам избежать создавать десятки кадров анимации для произведения эффекта.Новые действия были добавлены, включая поддержку обратных кинематических анимаций.
Новая система ограничений была добавлена к обработке сцены. SpriteKit применяет ограничения после того, как физика моделируется, и Вы используете их для указания ряда правил для того, как узел расположен и ориентирован. Например, можно использовать ограничение, чтобы указать, что определенный узел в сцене всегда указывает на другой узел в сцене. Ограничения упрощают реализовывать правила рендеринга в Вашей игре, не имея необходимость настраивать сцену вручную в Вашем цикле событий.
Сцена может реализовать все этапы цикла выполнения в делегате вместо того, чтобы разделить на подклассы
SKSceneкласс. Используя делегата часто означает, что можно избежать должными быть разделить на подклассыSKSceneкласс.SKViewкласс обеспечивает больше отладочной информации. Можно также обеспечить больше подсказок производительности для средства рендеринга.Можно создать текстуры карты нормалей для использования в освещении и вычислениях физики (или в собственных программах построения теней). Используйте новое
SKMutableTextureкласс, когда необходимо создать текстуры, содержание которых динамично обновляется.Можно генерировать атласы текстуры динамично во время выполнения от набора текстур.
Xcode 6 также включает много новых редакторов SpriteKit. Создайте или отредактируйте содержание сцен непосредственно, указав узлы, появляющиеся в сцене, а также их организациях физики и других характеристиках. Сцена сериализируется к файлу и может быть загружена непосредственно Вашей игрой. Редакторы экономят Вам время, потому что часто Вы не должны реализовывать своих собственных редакторов для создания активов игры.
Для получения информации о классах этой платформы см. Руководство по программированию Ссылки и SpriteKit Платформы SpriteKit.
Платформа UIKit
Платформа UIKit (UIKit.framework) включает следующие улучшения:
Приложения, использующие локальный или продвигающие уведомления, должны явно зарегистрировать типы предупреждений, которые они выводят на экран пользователям при помощи a
UIUserNotificationSettingsобъект. Этот процесс регистрации является отдельным от процесса для регистрации удаленных уведомлений, и пользователи должны дать разрешение поставлять уведомления через требуемые опции.Локальный и уведомления нажатия может включать пользовательские действия как часть предупреждения. Пользовательские действия появляются как кнопки на предупреждении. Когда коснулись, Ваше приложение уведомляют и просят выполнять соответствующее действие. Локальные уведомления могут также быть инициированы взаимодействиями с Базовыми областями Расположения.
Набор просматривает поддержку динамично изменение размера ячеек. Как правило, Вы используете эту поддержку для размещения изменений в предпочтительном размере текста, но можно адаптировать его к другим сценариям также. Представления набора также поддерживают больше опций для лишения законной силы различных частей расположения и таким образом улучшения производительности.
UISearchControllerкласс заменяетUISearchDisplayControllerкласс для управления дисплеем связанных с поиском интерфейсов.UIViewControllerкласс принимает черты и новые методы калибровки для корректировки содержания контроллера представления, как описано в Объединенных Раскадровках для Универсальных Приложений.UISplitViewControllerкласс теперь поддерживается на iPhone, а также iPad. Класс корректирует свой представленный интерфейс для адаптации к свободному месту. Класс также изменяет способ, которым он показывает и скрывает основной контроллер представления, давая Вам больше контроля тем, как вывести на экран интерфейс представления разделения.UINavigationControllerкласс имеет новые опции для изменения размера панели навигации или сокрытия его в целом.Новое
UIVisualEffectкласс позволяет Вам интегрировать пользовательские эффекты размытия в свои иерархии представления.Новое
UIPresentationControllerкласс позволяет, Вы разделить содержание Ваших контроллеров представления от хрома раньше выводили на экран их.Новое
UIPopoverPresentationControllerкласс обрабатывает представление содержания в легкой сдобе. СуществующееUIPopoverControllerкласс использует контроллер представления легкой сдобы для показа легкой сдобы на экране.Новое
UIAlertControllerкласс заменяетUIActionSheetиUIAlertViewклассы как предпочтительный способ вывести на экран предупреждения в Вашем приложении.Новое
UIPrinterPickerControllerкласс открывает вид основанный на контроллере способ вывести на экран список принтеров и выбрать тот для использования во время печати. Принтеры представлены экземплярами новогоUIPrinterкласс.Можно взять пользователя непосредственно к связанным с приложением настройкам в приложении Настроек. Передайте
UIApplicationOpenSettingsURLStringUIApplicationOpenSettingsURLStringпостоянный кopenURL:методUIApplicationкласс.
Для получения информации о классах этой платформы см. Ссылку Платформы UIKit.
Видео платформа панели инструментов
Видео платформа Панели инструментов (VideoToolbox.framework) включает прямой доступ к аппаратному видео кодирование и декодирование.
Платформа WebKit
Много новых классов были добавлены, чтобы упростить создавать высокоэффективные исходные приложения, использующие веб-контент. Посмотрите Ссылку Платформы WebKit.
Осуждаемый APIs
Следующий APIs осуждается:
UIApplicationметоды и свойства для регистрации уведомлений. Используйте новый API вместо этого.UIViewControllerметоды и свойства для интерфейсной ориентации. Черты и классы размера заменяют их, как описано в Объединенных Раскадровках для Универсальных Приложений. Существуют другие меньшие изменения в API UIKit для поддержки классов размера; часто более старые интерфейсы, использовавшие определенные идиомы устройства, были заменены.UISearchDisplayControllerкласс. Этот класс заменяетсяUISearchControllerкласс.Методы и свойства в GameKit тот проигрыватель использования строки идентификатора.
Для полного списка определенных осуждений API посмотрите iOS 8.0 API Diffs.