В documentation Apple заявляет, что вам нужно учитывать масштабный коэффициент слоя, когда он:
- Создает дополнительные слои Core Animation с различными масштабными коэффициентами и компонует их в свой собственный контент.
- Устанавливает свойство содержимого слоя основной анимации напрямую
Последнее утверждение мне не совсем понятно.
Они также говорят:
Приложения, которые используют уровни Core Animation, чтобы обеспечить может потребоваться корректировка кода чертежа для учета масштаба факторы. Обычно, когда вы рисуете свои виды drawRect: метод или в drawLayer: inContext: метод делегата слоев, система автоматически настраивает графический контекст для учета масштаба факторы.
Нормально или всегда? и это справедливо только для видимого поддерживаемого слоя поддержки или каждого слоя, который я добавляю в качестве подуровня для слоя подложки? потому что они также говорят:
Если ваше приложение создает слои без соответствующего вида, каждый новый масштабный коэффициент объектов уровня устанавливается на 1.0. Если ты не измените масштабный коэффициент, и если впоследствии вы нарисуете слой на экрана с высоким разрешением, содержимое слоев автоматически масштабируется для компенсации разницы в масштабных коэффициентах. Если вы не хотите содержимое масштабируется, вы можете изменить масштабный коэффициент слоев на 2.0, но если вы сделаете это без предоставления контента с высоким разрешением, ваш существующий контент может оказаться меньше, чем вы ожидали. Исправить эта проблема, вам необходимо предоставить контент с более высоким разрешением для вашего слой.
У меня возникли трудности с представлением слоя без представления, я могу представить себе иерархию слоев, но как только я хочу их отобразить, я должен добавить его в качестве подъяречности слоя поддержки представления или использовать некоторые другие способы их использования (например, создание и просто просмотр в контексте)?
Механизм компоновки Core Animations смотрит на contentsScale свойства каждого слоя, чтобы определить, содержит ли содержимое этого слоя необходимо масштабировать во время компоновки. Если ваше приложение создает слоев без соответствующего вида, каждая новая шкала объектов Сначала коэффициент устанавливается на 1.0. Если вы не измените эту шкалу фактор, и если впоследствии вы нарисуете слой с высоким разрешением экрана, содержимое слоев автоматически масштабируется для компенсации за разницу в масштабных факторах. Если вы не хотите, чтобы содержимое для масштабирования вы можете изменить коэффициент масштабирования слоев на 2,0, но если вы делаете это без предоставления контента с высоким разрешением, существующих контент может оказаться меньше, чем вы ожидали. Чтобы исправить это проблема, вам нужно предоставить контент с более высоким разрешением для вашего слоя.
Что это значит? Когда я делаю что-то вроде этого layer.contents = (id)image.CGImage
, мне нужно установить contentsScale.
Нужно ли мне также устанавливать его, когда мой слой рисует его содержимое, вызывая метод делегата drawLayer:inContext:
, а слой не является поддерживающим слоем представления?