iOS Информация о версии SDK для iOS 6

Содержание:

Введение

iOS 6 SDK предоставляет поддержку для разработки приложений для iOS, и это включает полный набор инструментов Xcode, компиляторов и платформ для создания приложений для iOS и OS X. Эти инструменты включают XCode IDE и Инструментальный аналитический инструмент среди многих других.

С этим программным обеспечением можно разработать приложения для iPhone, iPad или iPod touch рабочий iOS 6. Можно также протестировать приложения с помощью включенного Средства моделирования iOS, поддерживающего iOS 6. iOS 6 SDK требует компьютера Mac рабочий OS X 10.7.4 или выше (Лев).

Эта версия iOS предназначается для установки только на устройствах, зарегистрированных в Программе Разработчика Apple. Попытка установить эту версию iOS несанкционированным способом могла поместить Ваше устройство в неприменимое состояние.

Для получения дополнительной информации и дополнительные ресурсы поддержки, посетите http://developer .apple.com/programs/ios/.

Создание отчетов ошибки

Для сообщения о любых ошибках, не упомянутых в разделе Notes и Known Issues, используйте Генератор отчетов Ошибки Apple на веб-сайте Разработчика Apple (http://developer .apple.com/bugreporter/). Кроме того, можно обсудить эти вопросы и iOS 6 SDK на Форумах Разработчика Apple (http://devforums .apple.com). Можно получить больше информации о iCloud для Разработчиков в http://developer .apple.com/icloud.

Примечания и известные проблемы

Следующие проблемы касаются использования iOS 6 SDK для разработки кода.

Платформа учетных записей

Адресная книга

  • Запрашивать доступ к контактам:

    • Пользователи в состоянии предоставить или запретить доступа к контактным данным на основе на приложение. Чтобы запросить доступ к контактным данным, вызовите ABAddressBookRequestAccessWithCompletion функция после вызова ABAddressBookCreateWithOptions функция. ABAddressBookRequestAccessWithCompletion в то время как пользователя просят предоставить или запретить доступа, функция не блокирует приложение. Пока доступ не был предоставлен, ABAddressBookRef объект не будет содержать контактов и любой попытки изменить сбои контактов с a kABOperationNotPermittedByUserError ошибка. Пользователю предлагают только в первый раз, когда доступ запрашивается; любые последующие вызовы к ABAddressBookCreateWithOptions будет использовать существующие полномочия. Обработчик завершения вызывают на произвольной очереди. Если ABAddressBookRef объект используется всюду по приложению, тогда все использование должно быть диспетчеризировано той же очереди для использования ABAddressBookRef ориентированным на многопотоковое исполнение способом.

  • Проверка состояния авторизации доступа:

    • Приложение может использовать состояние API авторизации, чтобы проверить, может ли это получить доступ к контактам, календарям, напоминаниям или фото библиотеке. Этот API независим от доступа запроса API и не предложит пользователю предоставлять или запрещать доступа. С этим API приложение может скорректировать дисплей своих элементов UI, которые получили бы доступ к классу данных. Например, если доступ к контактам авторизовывается или не определяется, то кнопка UI для выбора контакта может быть выведена на экран.

    • Для Адресной книги вызовите ABAddressBookGetAuthorizationStatus функция. Для Набора События вызовите authorizationStatusForEntityType: метод класса EKEventStore. Для Библиотеки Активов вызовите authorizationStatus метод класса ALAssetsLibrary. Значение возвращающихся значений состояния следующие:

      • Состояние авторизации, Не Решительное — пользователь еще не сделал выбор относительно того, может ли это приложение получить доступ к классу данных.

      • Ограниченное Состояние авторизации — Это приложение не разрешено получить доступ к классу данных. Пользователь не может изменить состояние этого приложения, возможно вследствие активных ограничений, таких как существующий родительский контроль.

      • Отклоненное Состояние авторизации — пользователь явно запретило доступа к классу данных для этого приложения.

      • Авторизованное Состояние авторизации — Это приложение разрешено получить доступ к классу данных.

Аудио

  • Начинаясь в iOS 6, приложения должны иметь клавишу регулировки звука в их UIBackgroundModes для использования CoreMIDI MIDISourceCreate и MIDIDestinationCreate функции. Без набора ключей возвратятся эти функции kMIDINotPermitted (-10844).

Добрый день

  • NSNetService класс и CFNetService APIs не включают интерфейсы P2P по умолчанию. Для просмотра зарегистрируйтесь, или службы решения по интерфейсам P2P, приложение должно использовать Добрый день DNSService*() APIs, отмеченный ниже.

  • Установка interfaceIndex параметра на kDNSServiceInterfaceIndexAny в следующем APIs не будет включать интерфейсы P2P по умолчанию. Для включения интерфейсов P2P необходимо теперь установить kDNSServiceFlagsIncludeP2P флаг при использовании kDNSServiceInterfaceIndexAny, или набор interfaceIndex к kDNSServiceInterfaceIndexP2P. Затронутый APIs:

Базовое изображение

  • В iOS 6 Базовое Изображение добавляет следующие фильтры к набору, предоставленному в iOS 5:

    CIAffineClamp, CIAffineTile, CIBarsSwipeTransition, CIBlendWithMask, CIBloom, CIBumpDistortion, CIBumpDistortionLinear, CICircleSplashDistortion,CICircularScreen, CIColorMap, CIColorPosterize, CICopyMachineTransition, CIDisintegrateWithMaskTransition, CIDissolveTransition, CIDotScreen, CIEightfoldReflectedTile, CIFlashTransition, CIFourfoldReflectedTile, CIFourfoldRotatedTile, CIFourfoldTranslatedTile, CIGaussianBlur, CIGlideReflectedTile, CIGloom, CIHatchedScreen, CIHoleDistortion, CILanczosScaleTransform, CILineScreen, CIMaskToAlpha, CIMaximumComponent, CIMinimumComponent, CIModTransition, CIPerspectiveTile, CIPerspectiveTransform, CIPinchDistortion, CIPixellate, CIRandomGenerator, CISharpenLuminance, CISixfoldReflectedTile, CISixfoldRotatedTile, CISmoothLinearGradient, CIStarShineGenerator, CISwipeTransition, CITriangleKaleidoscope, CITwelvefoldReflectedTile, CIUnsharpMask, CIVortexDistortion

    Также в iOS 6, Базовое Изображение позволяет создание CIImage объекты, что ссылка Открывает объекты текстуры GL через imageWithTexture:size:flipped:colorSpace: метод CIImage класс.

Набор события

  • Запрашивая доступ к календарям или напоминаниям:

    • Пользователи в состоянии предоставить или запретить доступа к событию и данным напоминания на основе на приложение. Чтобы запросить доступ к событию и/или данным напоминания, вызовите requestAccessToEntityType:completion:: метод EKEventStore. В то время как пользователя просят предоставить или запретить доступа, это не блокирует приложение. Пока доступ не был предоставлен для типа объекта, хранилище события не будет содержать календарей для того типа объекта, и любая попытка сохранить данные перестанет работать.

    • Пользователю предложат только в первый раз, когда доступ запрашивается; любые последующие инстанцирования EKEventStore будет использовать существующие полномочия. Обработчик завершения вызывают на произвольной очереди.

Игровой центр

  • Приложения только для среды, вызывающие контроллер представления только для портрета (такой как Игровой экран входа в систему Центра) заставят приложение отказывать.

    Обходное решение:

    1. Приложения должны обеспечить метод делегата application:supportedIntefaceOrientationsForWindow и гарантируйте, что портрет является одним из возвращенных значений маски.

    2. Когда a UIBNavigationController включается, подкласс UINavigationController и переопределение supportedInterfaceOrientations.

iCloud

  • При создании учетной записи iCloud можно использовать любой основанный на электронной почте Apple ID или существующая учетная запись iCloud. Если у Вас была учетная запись MobileMe, которую Вы не перемещали в iCloud, можно использовать тот Apple ID, чтобы заригестрировать новый аккаунт iCloud (ни одни из предыдущих данных MobileMe не будут присутствовать).

    • icloud.com электронное письмо не может быть послано от www.icloud.com. В это время пользователи должны перейти в http://beta .icloud.com, если они хотят использовать веб-браузер для отправки электронного письма от их icloud.com адрес.

  • Настройка профилей должна быть включена для iCloud в Портале Настройки iOS. Для включения профиля настройки для iCloud перейдите к разделу App ID Портала Настройки iOS и сконфигурируйте Приложение ID для iCloud. После включения Приложения ID для iCloud регенерируйте свои профили настройки, чтобы включить им для iCloud.

  • setSortDescriptors: метод NSMetadataQuery не поддерживается.

  • В iOS 6 файлы, защищенные через Защиту данных, не могут использоваться с Хранением iCloud APIs.

  • Имена файлов нечувствительны к регистру в OS X, но чувствительны к регистру в iOS. Это может привести к проблемам при использовании iCloud для совместного использования файлов между этими двумя платформами. На iOS необходимо избежать создавать файлы с именами, отличающимися только случаем.

  • Поведение скоординированных операций чтения на Документах iCloud изменилось:

    • В предыдущих выпусках iOS, когда Ваше приложение выполнило скоординированную операцию чтения на файле или пакете и демоне iCloud, заметил, что была более новая версия доступного элемента, скоординированная операция чтения, блокированная, пока более новая версия элемента не была загружена и записана в диск.

    • С iOS 6 при запуске скоординированной операции чтения на файле или пакете, для которого у Вас уже есть локальная версия, скоординированное чтение предоставят как можно скорее, и новая версия, если таковые имеются, загрузит в фоновом режиме. Этот вызов блокирует для загрузки причин, только если Вы не имеете версию в наличии файла локально.

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

iTunes

  • iTunes 10.6.3 требуется для iOS 6 SDK.

  • Предыдущие общедоступные беты iOS больше не могут загружать песни Соответствия iTunes.

Расположение

  • В бете 4 iOS 6 модификации были представлены новому перечислению CLActivityType в базовом расположении:

Карты

  • В iOS 6 и позже, Набор Карты основан на новой инфраструктуре, размещенной Apple. Более ранние выпуски iOS будут продолжать использовать службу Google.

    • Совместимость API будет сохраняться (см. известные проблемы ниже).

    • Карты теперь поддерживаются в Средстве моделирования.

    • Данные карты будут продолжать развиваться — только ограниченная сумма спутникового формирования изображений с высокой разрешающей способностью в настоящее время доступна.

  • Приложения маршрутизации, не указывающие файл покрытия во время разработки, будут всегда выводиться на экран в результатах поиска маршрутизации Карт.

  • Тестирование и отладка файлов покрытия для приложений маршрутизации только поддерживаются во время разработки через поток операций Выполнения XCode. (Можно указать файл покрытия для данной схемы Run с помощью области Options раздела Run редактора схемы.) Приложения, архивирующиеся и распределяющиеся (за пределами App Store) на устройства, не будут иметь доступа к файлам покрытия приложения.

  • Разработчики должны рассмотреть свой код для вызовов к renderInContext на уровне, отступающем MKMapView; отказ сделать так может заставить их приложения отказывать. Если эти вызовы убегаются основной поток, они должны быть устранены или перемещены в основной поток.

Медиапроигрыватель

  • С iOS 6, если Вы играете видео или аудио в a UIWebView, необходимо сконфигурировать аудио сеанс правильно так, чтобы аудио не было заставлено замолчать переключателем вызывного устройства. Это поведение соответствует видео и аудио, когда играется с помощью собственных классов.

Сберкнижка

  • Передачи больше не будут отступать к background.png если strip.png не включен в Ваш пакет передачи.

  • Содержание userInfo словарь для PKPassLibraryDidChangeNotification изменились в случае удаленных передач. Консультируйтесь с последней документацией для нового userInfo словарь.

  • Передачи должны включать Промежуточный Сертификат WWDR в свою подпись. Передачи, опускающие этот сертификат, недопустимы и не могут быть добавлены к Сберкнижке. Это ограничение не было осуществлено в предыдущих бета-версиях.

  • Изображения включали в передачи, что использование RGB должно включать альфа-канал.

Безопасность

  • В iOS 5, подписывая сертификат с подписью MD5 не поддерживается. Гарантируйте, чтобы сертификаты использовали алгоритмы сигнатуры на основе SHA1 или SHA2.

  • В iOS 6 существуют улучшенные средства управления конфиденциальностью для Календаря, Напоминаний, Контактов и фотографий.

    • Когда приложение попытается получить доступ к любому из тех типов данных, пользователи будут видеть диалоговые окна доступа. Пользователь может включить и выключить доступ в Настройках> Конфиденциальность.

    • Разработчики могут установить строку «цели» для каждого класса изолированных данных. iOS выводит на экран эту строку пользователям, чтобы помочь им понять, почему запрашиваются их данные. Эти строки могут быть добавлены с помощью редактора XCode Проекта, который находится на вкладке Info. Соответствующие ключевые имена начинаются со строки “Конфиденциальность -”.

    • Существуют изменения в платформах Набора и Адресной книги События для помощи разработчикам с этой функцией.

Совместно используемый фото поток

  • Функция Shared Photo Stream установлена в OFF при обновлении от беты 1 iOS 6 до более позднего выпуска. Настройка по умолчанию должна идти.

Средство моделирования

  • Никакие предупреждения конфиденциальности не выведены на экран в Средстве моделирования iOS для приложений что фотографии доступа, Контакты, Календарь и Напоминания.

  • Для этого выпуска Средство моделирования iOS не поддерживает тестирование Закупка В приложении. Используйте устройство для тестирования приложений, использующих эту функцию.

  • Когда попытка играть MP3 звучит в Средстве моделирования, Вы услышите появляющийся звук вместо этого.

Социальный

  • Weibo обнаруживается в приложении Настроек, только если включена китайская клавиатура.

  • requestAccessToAccountsWithType:withCompletionHandler: метод ACAccountStore теперь осуждается. В учетные записи пользователя доступа используйте requestAccessToAccountsWithType:options:completion: метод.

    В параметре опций этого нового метода, передачи nil получить доступ к Twitter и учетным записям Weibo. Для доступа к учетным записям Facebook передайте словарь со следующими ключами (которые документируются в ACAccountStore.h):

    Вы больше не должны добавлять этот словарь к своему приложению Info.plist файл, как требовался в бете 1.

  • Запрашивая доступ к учетным записям Facebook, единственный ключ, требуемый в Вашем словаре опций, ACFacebookAppIdKey. ACFacebookPermissionGroupKey и ACFacebookAppVersionKey являются теперь устаревшими.

    Если Вы запрашиваете разрешение записи под ACFacebookPermissionsKey— такой как publish_stream— необходимо обеспечить значение для ACFacebookAudienceKey, который может быть одним из ACFacebookAudienceEveryone, ACFacebookAudienceFriends, или ACFacebookAudienceOnlyMe.

Строка состояния

  • Теперь возможно установить параметры оттенка строки состояния в Вашем приложении Info.plist файл. Вы могли бы сделать это, чтобы гарантировать, что цвет строки состояния соответствует цвет панели навигации Вашего приложения во время запуска. Для установки оттенка строки состояния добавьте UIStatusBarTintParameters ключ к Вашему Info.plist файл. Значение этого ключа является словарем с надлежащими значениями, описывающими панель навигации, которую Ваше приложение имеет при запуске. В словаре должен быть UINavigationBar ключ, имеющий значение, которое является также словарем. Тот словарь содержит стиль начальной панели навигации (с Style ключ), и указывает, полупрозрачно ли это (с Translucent ключ). Можно также указать цвет оттенка панели навигации (с TintColor ключ) или имя его пользовательского фонового изображения (с BackgroundImage ключ).

UIKit

  • В iOS 5.1, UISplitViewController класс принимает скользящий стиль презентации при представлении левого представления (ранее замеченный только в Почте). Когда представление инициируется или существующим элементом кнопки панели, предоставленным методами делегата или сильно ударить жестом в правильном представлении, этот стиль используется. Никакое дополнительное принятие API не требуется, чтобы получать это поведение и весь существующий APIs — включая тот из UIPopoverController экземпляр, предоставленный делегатом — будет продолжать работать как прежде. Если жест был бы невыносим в Вашем приложении, установив presentsWithGesture свойство Вашего разделения просматривает контроллер к NOfalse отключает жест. Однако отключению жеста обескураживают, потому что его использование сохраняет непротиворечивый пользовательский опыт через все приложения.

  • В iOS 6 были представлены изменения так, чтобы Вы больше не устанавливали делегата и реализовывать метод для единственного пальца и устройств распознавания жеста единственного касания. Это заставляет их работать хорошо с UIControl объекты.

  • В iOS 6 и позже, UIWebView класс красит свое содержание асинхронно.

  • Авторотация изменяется в iOS 6. В iOS 6, shouldAutorotateToInterfaceOrientation: метод UIViewController осуждается. В его месте необходимо использовать supportedInterfaceOrientationsForWindow: и shouldAutorotate методы.

    • Больше ответственности перемещается в приложение и делегата приложения. Теперь, контейнеры iOS (такой как UINavigationController) не консультируйтесь с их дочерними элементами, чтобы определить, должны ли они самовращаться. По умолчанию приложение и представление поддерживаемые интерфейсные ориентации контроллера установлены в UIInterfaceOrientationMaskAll для идиомы iPad и UIInterfaceOrientationMaskAllButUpsideDown для идиомы iPhone.

    • Представление поддерживаемые интерфейсные ориентации контроллера может изменяться в течение долгого времени — даже поддерживаемые интерфейсные ориентации приложения могут изменяться в течение долгого времени. Система спрашивает самый верхний полноэкранный контроллер представления (обычно корневой контроллер представления) для его поддерживаемых интерфейсных ориентаций каждый раз, когда устройство вращается или каждый раз, когда контроллеру представления дарят полноэкранный модальный стиль презентации. Кроме того, поддерживаемые ориентации получены, только если возвращается этот контроллер представления YEStrue от shouldAutorotate метод. Система пересекает поддерживаемые ориентации контроллера представления с поддерживаемыми ориентациями приложения (как определено Info.plist файл или делегат приложения application:supportedInterfaceOrientationsForWindow: метод), чтобы определить, вращаться ли.

    • Система определяет, поддерживается ли ориентация путем пересечения значения, возвращенного приложением supportedInterfaceOrientationsForWindow: метод со значением, возвращенным supportedInterfaceOrientations метод самого верхнего полноэкранного контроллера.

    • setStatusBarOrientation:animated: метод не осуждается напрямую. Это теперь работает только если supportedInterfaceOrientations метод самых верхних полноэкранных возвратов контроллера представления 0. Это делает вызывающую сторону ответственной за обеспечение, что ориентация строки состояния является непротиворечивой.

  • willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:, и didRotateFromInterfaceOrientation: методы больше не вызывают ни на каком контроллере представления, делающем полноэкранное представление по себе — например, presentViewController:animated:completion:.

    • Необходимо удостовериться, что приложения не используют эти методы для управления расположением любых подпредставлений. Вместо этого они должны использовать контроллер представления viewWillLayoutSubviews метод и корректирует расположение с помощью прямоугольника границ представления.

  • В iOS 6, viewWillUnload и viewDidUnload методы UIViewController теперь осуждаются. При использовании этих методов для выпуска данных, используйте didReceiveMemoryWarning метод вместо этого. Можно также использовать этот метод для выпуска ссылок на представление контроллера представления, если это не используется. Необходимо было бы протестировать это, представление не находится в окне прежде, чем сделать это.

  • Это не поддерживается для установки значений для shadowOffset или shadowColor свойства a UILabel возразите если attributedText свойство содержит допустимую приписанную строку. Вместо этого используйте NSShadowAttributeName атрибут приписанной строки для установки тени.

  • Вследствие проблем совместимости, NSBaselineOffsetAttributeName атрибут больше не поддерживается в iOS 6.

  • NSTextAlignmentNatural значение не поддерживается. Это выдаст исключение, когда это будет использоваться с textAlignment свойство UILabel или предоставляется как параметр выравнивания drawInRect:withFont:lineBreakMode:alignment: метод NSString.

  • setContentStretch: метод UIView был осужден. Для достижения того же эффекта используйте resizableImageWithCapInsets: метод UIImage и выведите на экран изображение с a UIImageView.

  • resizableImageWithCapInsets: метод UIImage эффективно изменяет размеры изображений путем мозаичного размещения. Как оптимизация производительности, это использует протяжение вместо того, чтобы разместить рядом, когда пользователь не был бы в состоянии сказать различие, такой как тогда, когда расширяются отдельный столбец или строка. Но при определенных обстоятельствах, пользователь мог бы хотеть фактически расширить некоторую область изображения. В iOS 6, resizableImageWithCapInsets:resizingMode: метод позволяет вызывающей стороне указывать мозаичное размещение или протяжение режима изменения размеров.

  • UICollectionViewLayout класс изменился:

    • Класс теперь поддерживает настройку анимаций, создаваемых во время вращения. Имена методов для настройки вставляют и удаляют анимации, также изменились, таким образом, те же рычаги могут использоваться для вращений, а также для вставок и удалений.

    • Класс изменил некоторые имена методов. В частности представления художественного оформления больше не именуются “идентификатором повторного использования”, а скорее “видом элемента”. Приложения, использующие представления художественного оформления, должны будут изменить свой код и быть восстановлены для размещения этого.

  • Базовый край a UILabel представление теперь отличается от своей базовой линии.

    Ранее, Автоматическое Расположение интерпретировало нижнюю часть a UILabel совпадать с его базовой линией. В то время как удобный во многих случаях, это вызвало проблемы, если Вы хотели поместить главный край одной метки против базового края другого. В таком сценарии нижняя метка перекрыла бы лучший, и подстрочные элементы от главной метки могли врезаться в надстрочные элементы от нижней метки. Теперь, Автоматическое Расположение интерпретирует UILayoutAttributeBottom как нижняя часть текстового поля (предположение метки не больше, чем ее внутренний размер содержания), и UILayoutAttributeBaseline как базовая линия текста. Если Вы уже создали код для разметки меток согласно нижней части или центральной точке, Ваш текст переместится немного, и необходимо будет скорректировать ограничения.

  • Приложения с табличными представлениями в их пере или файлах раскадровки, и которые были созданы с помощью предыдущих версий беты iOS 6, потребуют чистой сборки с бетой 3 и более новый.

  • Вот некоторые примечания относительно Автоматической поддержки Расположения UIScrollView:

    • В целом Автоматическое Расположение полагает, что вершина, оставленная, нижняя часть и правые края представления, видимые края. Т.е. при прикреплении представления к левому краю его суперпредставления Вы действительно прикрепляете его к минимальному x-значению границ суперпредставления. Изменение источника границ суперпредставления не меняет положение представления.

    • UIScrollView класс прокручивает свое содержание путем изменения источника его границ. Для создания этой работы с Автоматическим Расположением вершина, левая, нижняя часть и правые края в представлении прокрутки теперь, означает края довольного представление.

    • Ограничения на подпредставления представления прокрутки должны привести к размеру для заполнения, который тогда интерпретируется как размер содержания представления прокрутки. (Это не должно быть перепутано с intrinsicContentSize метод используется для Автоматического Расположения.) Для калибровки представления прокрутки frame с Автоматическим Расположением ограничения должны или быть явными относительно ширины и высоты представления прокрутки, или края представления прокрутки должны быть связаны к представлениям за пределами его поддерева.

    • Обратите внимание на то, что можно заставить подпредставление из представления прокрутки, казаться, плавать (не, прокручивают) по другому содержанию прокрутки путем создания ограничений между представлением и представлением вне поддерева представления прокрутки, таких как суперпредставление представления прокрутки.

    • Вот некоторые примеры того, как сконфигурировать представление прокрутки:

      • Смешанный подход:

        1. Позиция и размер Ваше представление прокрутки с ограничениями, внешними к представлению прокрутки — т.е. translatesAutoresizingMaskIntoConstraints свойство установлено в NOfalse.

        2. Создайте плоскость UIView довольный представление для Вашего представления прокрутки, которое будет размером, который Вы хотите, чтобы Ваше содержание имело. Сделайте его подпредставлением представления прокрутки, но позвольте ему продолжать переводить маску автоизменения размеров в ограничения:

          UIView *contentView = [[UIView alloc]
              initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
          [scrollView addSubview:contentView];
          // DON'T change contentView's translatesAutoresizingMaskIntoConstraints,
          // which defaults to YES;
        3. Установите размер содержания представления прокрутки для соответствия размера довольного представление:

          [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
        4. Создайте представления, Вы хотите вставить довольное представление и сконфигурировать их ограничения, чтобы расположить их в довольном представление.

          Также можно создать поддерево представления, чтобы войти в представление прокрутки, установить ограничения и вызвать systemLayoutSizeFittingSize: метод (с UILayoutFittingCompressedSize опция) для нахождения размера, Вы хотите использовать для Вашего довольного представление и contentSize свойство представления прокрутки.

      • Чистый Автоматический подход Расположения:

        1. Набор translatesAutoresizingMaskIntoConstraints к NOfalse на всех включенных представлениях.

        2. Позиция и размер Ваше представление прокрутки с ограничениями, внешними к представлению прокрутки.

        3. Используйте ограничения для разметки подпредставлений в представлении прокрутки, будучи уверенными, что ограничения связывают со всеми четырьмя краями прокрутки, просматривают и не полагаются на представление прокрутки для получения их размера.

          Простым примером было бы большое представление изображения, имеющее внутренний размер содержания, полученный из размера изображения. В viewDidLoad метод Вашего контроллера представления, Вы включали бы код как следующее:

          UIScrollView *scrollView = [[UIScrollView alloc] init];
          UIImageView *imageView = [[UIImageView alloc] init];
          [imageView setImage:[UIImage imageNamed:"MyReallyBigImage"]];
          [self.view addSubview:scrollView];
          [scrollView addSubview:imageView];
           
          scrollView.translatesAutoresizingMaskIntoConstraints = NO;
          imageView.translatesAutoresizingMaskIntoConstraints = NO;
           
          NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scrollView,imageView);
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];

          Это высказало бы Вам мнение прокрутки, изменившее размеры как измененное представление контроллера представления (такой как на вращении устройства), и представление изображения будет подпредставлением прокрутки. Вы не должны устанавливать размер содержания представления прокрутки.

  • Приложения только для среды, вызывающие контроллер представления только для портрета (такой как Игровой экран входа в систему Центра) заставят приложение отказывать.

    Обходное решение:

    1. Приложения должны обеспечить метод делегата application:supportedIntefaceOrientationsForWindow и гарантируйте, что портрет является одним из возвращенных значений маски.

    2. Когда a UIBNavigationController включается, подкласс UINavigationController и переопределение supportedInterfaceOrientations.

WebKit и Safari

  • WebKit на iOS теперь поддерживает requestAnimationFrame и cancelAnimationFrame методы в JavaScript, как описано здесь: http://www .w3.org/TR/animation-timing/.

    • Обратите внимание на то, что, потому что спецификация все еще в Рабочем Черновом состоянии, эти методы имеют webkit префикс, таким образом, они window.webkitRequestAnimationFrame и window.webkitCancelAnimationFrame.

  • Квота кэша приложения по умолчанию увеличилась с 5 МБ до 25 МБ.

  • Порог подвыборки JPEG увеличился с 2 MP (мегапиксели) к 5 MP на всем поддерживаемом оборудовании кроме iPhone 3GS и iPod touch (четвертое поколение).

  • Поддержка была добавлена для <input type="file"> теги в веб-формах. Пользователи могут загрузить существующие фотографии и видео от их фото библиотеки или сделать снимок или видео с помощью камеры. Ранее, это управление формой всегда отключалось.

  • С Safari 6.0 на OS X разработчики могут теперь использовать веб-Инспектора (инструмент веб-разработки) с присоединенными устройствами на iOS и Средством моделирования iOS. Разработчики могут использовать веб-Инспектора для отладки Safari и UIWebView класс в их собственных приложениях, созданных и выполненных от XCode. Это заменяет баннер Консоли отладки в Safari.

  • В iOS 6 и позже, веб-данные (веб-Хранение SQL и LocalStorage) от a UIWebView объект может храниться в каталоге, который будет скопирован. Чтобы позволить поддержать эти данные, установите WebKitStoreWebDataForBackup ключ к YEStrue в пользовательских значениях по умолчанию Вашего приложения. Это должно быть сделано, только если Ваше приложение полагается на данные веб-контента, которые не могут быть перезагружены. Если Ваш UIWebView объект открывает ссылки к произвольному веб-контенту, этот ключ должен быть установлен к NOfalse. Переключение значения этого ключа не сохранит существующие веб-данные представления.

  • В iOS 6 и позже, Safari больше не регистрируется для общего feed: Схема RSS/ATOM. Приложения, которые могут просмотреть те типы подачи, призваны зарегистрироваться для той схемы URL.

  • WebKit больше всегда создает аппаратно ускоренные уровни для элементов с -webkit-transform: preserve-3d опция. Авторы должны прекратить использовать эту опцию в качестве способа получить аппаратное ускорение.

  • С iOS 6, встроенный YouTube URLs в форме http://www.youtube.com/watch?v=oHg5SJYRHA0 больше не будет работать. Этот URLs для того, чтобы смотреть видео на сайте YouTube, не для встраивания в веб-страницы. Вместо этого формат, который должен использоваться, описан здесь: https://developers.google.com/youtube/player_parameters.

  • В iOS 6, keyboardDisplayRequiresUserAction свойство было добавлено к UIWebView класс. Значения по умолчанию свойства к YEStrue, что означает тот вызов focus() на форме элемент не переведет клавиатуру в рабочее состояние. Путем изменения свойства на NOfalse, вызов JavaScript к focus() на форме элемент будет фокусировать элемент и переводить клавиатуру в рабочее состояние автоматически.

  • С iOS 6, вызывая focus() на элементе формы в веб-приложении будет фокусировать элемент.