В чем секрет "contentScaleFactor" UIView при использовании с CATiledLayer?

Приветствую,

Я работаю над приложением, вдохновленным примером "ZoomingPDFViewer", который поставляется с iOS SDK. В какой-то момент я нашел следующий кусок кода:

// to handle the interaction between CATiledLayer and high resolution
// screens, we need to manually set the tiling view's 
// contentScaleFactor to 1.0. (If we omitted this, it would be 2.0 
// on high resolution screens, which would cause the CATiledLayer 
// to ask us for tiles of the wrong scales.)
pageContentView.contentScaleFactor = 1.0;

Я попытался узнать больше о contentScaleFactor и что он делает. Прочитав всю документацию Apple, в которой упоминался этот параметр, я поискал в Google, но так и не нашел однозначного ответа на вопрос, что он на самом деле делает.

Вот несколько вещей, которые меня интересуют:

  1. Похоже, что contentScaleFactor оказывает какое-то влияние на графический контекст, когда содержимое UIView/CALayer's рисуется. Похоже, это относится к дисплеям с высоким разрешением (например, Retina Display). Какое влияние имеет contentScaleFactor и на что?

  2. При использовании UIScrollView и настройке его на масштабирование, скажем, моего contentView; все вложенные виды contentView тоже масштабируются. Как это работает? Какие свойства UIScrollView изменяет, чтобы даже видеоплееры стали размытыми и увеличили масштаб?

TL;DR: Как работает функция масштабирования UIScrollView "под капотом"? Я хочу понять, как это работает, чтобы я мог написать правильный код.

Любые подсказки и объяснения будут высоко оценены! :)

17
задан BastiBen 11 March 2011 в 12:31
поделиться