Объясненное высокое разрешение: особенности и преимущества
Две характеристики определения высокого разрешения для OS X являются высокой плотностью пикселей и виртуальным экраном. В OS X существует в четыре раза больше пикселей для данной области на дисплее с высокой разрешающей способностью. Увеличение плотности пикселей означает, что получение более точно, приводя к более резкому тексту, чрезвычайно подробным фотографиям, и большему количеству интерфейса созданного пользователя.
Виртуальный экран разъединяет физические пиксели, нарисованные в пространстве устройства из пространства пользователя, к которому рисует Ваше приложение, таким образом, Вы не должны интересоваться характеристиками дисплея на который Ваше выполнение приложения. Системные платформы оптимизированы и обновлены для выполнения работы, должен был отобразить пространство пользователя на пространство устройства. Большую часть времени Ваше приложение не должно будет знать, рисует ли оно к стандарту - или дисплей с высокой разрешающей способностью, или перетаскивает ли пользователь окно от одного дисплея разрешения до другого.
Реализация с высокой разрешающей способностью на OS X приносит с ним несколько особенностей и преимуществ. Понимание их поможет, поскольку Вы оптимизируете свое приложение.
Точки не соответствуют пикселям
OS X относится к размеру экрана в точках, не пикселям. Точка является одним модулем в пространстве пользователя до любых трансформаций на пространстве. Поскольку на дисплее с высокой разрешающей способностью существует четыре экранных пикселя для каждой точки, точки могут быть выражены как значения с плавающей точкой. Значения, которые являются целыми числами в стандартном разрешении, такими как координаты мыши, являются значениями с плавающей точкой на дисплее с высокой разрешающей способностью, допуская большую точность для таких вещей как графическое выравнивание.
Ваше приложение рисует к представлению с помощью точек в пространстве пользователя. Сервер окна составляет композит, операции рисования к внеэкранному буферу вызвали запоминающее устройство. Когда это прибывает время для отображения содержания запоминающего устройства на экране, сервер окна масштабирует содержание соответственно, отображая точки на экранные пиксели. Результат состоит в том, что, если Вы рисуете то же содержание на двух аналогичных устройствах, и у только одного из них есть экран с высокой разрешающей способностью, содержание, кажется, о том же размере на обоих устройствах, как показано на рисунке 1-1. Инвариантность размера является главной особенностью высокого разрешения.
В Вашем собственном коде для прорисовки Вы будете использовать точки большую часть времени, но существуют экземпляры, когда Вы, возможно, должны были бы знать, как точки отображаются на пикселях. Например, на экране с высокой разрешающей способностью, Вы могли бы хотеть обеспечить больше подробности в своем содержании или скорректировать позицию или размер содержания тонкими способами. Для тех случаев возможно получить отступающий масштабный коэффициент, говорящий Вам отношение между точками и пикселями для определенного объекта (представление, окно или экран). Отступающим масштабным коэффициентом не является глобальная переменная — это - свойство объекта (уровень, представление, окно) и под влиянием дисплея, в который это помещается. Во всех случаях это значение будет или 1.0 или 2.0, в зависимости от разрешения базового устройства. (Для получения дополнительной информации посмотрите Получающую информацию Масштаба). Факт, что отступающим масштабным коэффициентом всегда является целое число, является другой главной особенностью высокого разрешения.
Разрешение может измениться динамично
OS X поддерживает динамическую среду, которая может включать больше чем один дисплей, которого или оба могут быть стандартным или высоким разрешением. Из-за этого могут пользователи:
Подключите или разъедините второй дисплей
Закройте крышку ноутбука и используйте ее с внешним дисплеем
Перетащите окно приложения от одного дисплея до другого
Запоминающее устройство окна принадлежит дисплею, на котором нарисовано окно. Если пользователь перетаскивает окно от одного дисплея до другого, владения изменений запоминающего устройства, как только целевой дисплей имеет больше чем 50% содержания окна (как показано на рисунке 1-2). Когда владение изменяется, дескрипторы OS X столько этих динамических изменений, сколько оно может.
Большую часть времени OS X автоматизирует динамические изменения разрешения, беспрепятственно переключая содержание от стандарта до высокого разрешения. Существуют некоторые случаи, для которых должно будет принять меры Ваше приложение, когда изменение в разрешении произойдет (см. Динамические изменения Дескриптора в Разрешении Окна Только, Когда Вы Должны).
OS X обеспечивает много улучшений получения автоматически
Независимо от разрешения базового экрана технологии получения в OS X предоставляют поддержку для того, чтобы сделать Ваше представленное довольное взглядом хороший. Например:
Стандартные представления AppKit (текстовые представления, кнопки, табличные представления, и т.д.) автоматически представляют правильно в любом разрешении.
Основанное на векторе содержание (
NSBezierPath
,CGPathRef
, PDF, и т.д.), автоматически использует в своих интересах любые дополнительные пиксели для рендеринга более резких строк для форм.Текст какао автоматически представляет более резкий в более высоких разрешениях.
AppKit поддерживает автоматическую загрузку вариантов с высокой разрешающей способностью Ваших изображений.
Большая часть Вашего существующего кода для прорисовки будет работать без модификации, потому что сервер окна автоматически составляет размер запоминающего устройства для контекста графики окна. Любое содержание Вы подходите к концу drawRect:
метод будет в надлежащем разрешении для базового устройства. Однако любой код для прорисовки, использующий память, которую Вы создаете, такие как Кварц битовые массивы, потребует, чтобы Вы управляли содержанием.
Для растровых изображений для появления резкими на дисплее с высокой разрешающей способностью необходимо будет создать версии ресурсов изображения, имеющих дважды разрешение как прежде. Но после обеспечения тех версий AppKit будет управлять загрузкой надлежащей версии для разрешения. Для получения дополнительной информации об обновлении Ваших ресурсов изображения посмотрите, Обеспечивают Версии С высокой разрешающей способностью Всех Ресурсов Графики Приложения.
Представления изображения идеальны для высокого разрешения
Понятие представления изображения важно для высокого разрешения. Объект представления изображения (NSImageRep
) представляет изображение в определенном пользовательском размере и плотности пикселей, используя определенное цветовое пространство, и в определенном формате данных. NSImage
объекты используют представления изображения для управления данными изображения. NSImage
объект может содержать объекты представления повторного изображения.
Для основанных на файле изображений, NSImage
создает объект представления изображения для каждого отдельного изображения, сохраненного в файле. Несмотря на то, что большинство форматов изображения поддерживает только единственное изображение, форматы, такие как TIFF могут сохранить повторные изображения. Для поддержки высокого разрешения можно обеспечить пар изображений — одного стандартного разрешения и другого высокого разрешения — в том же файле, как показано на рисунке 1-3. Когда это прибывает время для отображения изображения в приложении, NSImage
выбирает наименьшее представление изображения, имеющее больше пикселей, чем место назначения. Для получения информации о том, как упаковать и загрузить изображения, видит Пакет Многократные Версии Ресурсов Изображения в Изображения Файла и Загрузки Используя Методы загрузки изображения С высокой разрешающей способностью опытные.
Результат продвижений глифа с плавающей точкой в улучшенном текстовом расположении
Используя экранные шрифты (для размеров шрифта 16 ПБ и меньший) оптимизирует текстовое расположение для дисплея стандартного разрешения. Для экранного шрифта текст размечается с помощью интегральных продвижений глифа. Поскольку более высокая плотность пикселей на дисплее с высокой разрешающей способностью допускает продвижения глифа с плавающей точкой даже в размерах мелкого шрифта, экранный шрифт больше не требуется. Результат продвижений с плавающей точкой в более точном расположении, как показано на рисунке 1-4, и допускает кернинг и лигатуры для размеров шрифта меньшего размера. Если Ваше приложение основано на документе и поддерживает редактирование текста и расположение, необходимо ознакомить себя с текстовыми настройками по умолчанию. Посмотрите Корректируют Параметры шрифта для Обеспечения Совместимости Документа.
OS X оптимизирует пользовательский опыт с высокой разрешающей способностью для существующих приложений
Как хорошо существующее выполнение приложения в высоком разрешении зависит от платформ и графических ресурсов, оно использует. Приложение, кодовая база которого еще не была оптимизирована для графики с высокой разрешающей способностью, будет или работать в масштабируемом платформой режиме или увеличило режим. Большинство приложений Какао будет работать в масштабируемом платформой режиме; другие приложения будут работать в увеличенном режиме. Различием между режимами является размер запоминающего устройства. В увеличенном режиме (показанный на рисунке 1-5), запоминающее устройство имеет одну четверть число пикселей как дисплей с высокой разрешающей способностью (половина ширины и высоты дисплея). Система должна увеличить содержание запоминающего устройства для заполнения дисплея. В масштабируемом платформой режиме запоминающее устройство имеет то же число пикселей как дисплей. Каждый режим объяснен более подробно в следующих разделах.
Масштабируемый платформой режим обеспечивает автоматическое масштабирование
Большинство существующих приложений Какао масштабируется автоматически. В масштабируемом платформой режиме среда разработки приложения автоматически корректирует размер получения для обеспечения резкой графики, является ли дисплей стандартным или высоким разрешением. Размер запоминающего устройства корректируется для размещения фактического числа пикселей на экране. Среды разработки приложения рисуют все стандартные элементы пользовательского интерфейса — такие как кнопки, меню и панель заголовка окна — к корректному размеру для разрешения.
Когда платформа обнаруживает, что средства управления должны быть нарисованы на дисплее с высокой разрешающей способностью, она корректирует запоминающее устройство для размещения масштабирования каждой размерности 2x. Или стандартное или высокое разрешение, пользователь видит высококачественный рендеринг средств управления. Средства управления появляются тот же размер пользователю независимо от размера запоминающего устройства, но на дисплее с высокой разрешающей способностью, средства управления выглядят более резкими вследствие плотности отступающих пикселей.
Любое основанное на векторе получение, выполняемое приложением, масштабируется для высокого разрешения и будет выглядеть столь же резким как стандартные элементы пользовательского интерфейса.
Растровые изображения увеличены для дисплея с высокой разрешающей способностью. Изображения будут корректным пользовательским размером, но будут казаться немного нечеткими вследствие увеличения. Приложения должны обеспечить версии с высокой разрешающей способностью изображений для получения лучшего пользовательского опыта.
Увеличенный режим размещает приложения, которые не все же готовы к высокому разрешению
В увеличенном режиме (как показано на рисунке 1-5), запоминающее устройство окна остается в 1x масштабирование. Система масштабирует содержание с помощью интерполяции ближайшего соседа для рисования содержания на дисплее с высокой разрешающей способностью. Пользовательский интерфейс измерен, как Вы ожидаете, без дополнительной подробности, и могли бы выглядеть немного расплывчатыми в результате.
Все приложения, которые не являются приложениями Какао, выполненными в увеличенном режиме. Однако приложение Какао может также работать в увеличенном режиме если:
Пользователь устанавливает опцию открыть приложение в низком разрешении (см. рисунок 1-7).
Приложение, как известно, имеет значительные проблемы при выполнении в масштабируемом платформой режиме, таким образом, система делает исключение и вместо этого выполняет приложение в увеличенном режиме.
Из-за потери подробности необходимо полагаться на увеличенный режим только, пока Вы не вносите необходимые изменения для поддержки графики с высокой разрешающей способностью в приложении.
Возможность приложения с высокой разрешающей способностью доступна в информационном окне
Пользователи могут узнать, работает ли приложение в низком разрешении путем открытия его окна Info и рассмотрения флажка «Open in Low Resolution», как показано на рисунке 1-7. Приложениям, которые не являются приложениями Какао, выбрали этот флажок, и недоступный (потускнел). Большинство приложений Какао имеет этот флажок в наличии, но не выбранное. Если приложению связали проблемы удобства пользования с высоким разрешением, пользователь может принять решение выполнить приложение Какао в увеличенном режиме.
Некоторым приложениям Какао, не полностью оптимизированным для высокого разрешения, можно было бы выбрать флажок и доступный по умолчанию. Эти приложения будут работать в увеличенном режиме, если пользователь не переопределит настройку по умолчанию. Если проблемы, связанные с высоким разрешением, терпимы, пользователи могли бы хотеть переопределить значение по умолчанию.
Если флажок «Open in Low Resolution» устанавливается по умолчанию для Вашего приложения — доступен ли флажок (потускнел) или не — можно изменить значение по умолчанию:
Исправление всех ошибок, связанных с высоким разрешением
Установка
NSHighResolutionCapable
атрибут кYES
, в Info.plist для приложения, как показано на рисунке 1-8.
Когда пользователи обновят к исправленной версии Вашего приложения, они будут в состоянии наслаждаться версией с высокой разрешающей способностью.
Если Ваше приложение оптимизировано для высокого разрешения, можно запросить, чтобы флажок «Open in Low Resolution» не был выведен на экран путем добавления NSHighResolutionMagnifyAllowed
ключ к Info.plist для Вашего приложения. Затем установите значение ключа в NO
(Булево значение). Значение YES
(значение по умолчанию), означает, что флажок должен быть показан, как обычно.