В documentation Apple, говорится, что вы должны учитывать коэффициент масштабирования слоя, когда он:Когда мне нужно установить свойство contentsScale CALayer?
- создает дополнительные слои Core Animation с различными масштабными коэффициентами и композитов их в свое собственное содержание
- Устанавливает содержание свойство слоя Core Animation непосредственно
Последнее утверждение не совсем ясно для меня. Они также говорят:
Приложения, использующие внутренние слои анимации непосредственно для обеспечения контента может потребоваться настроить свой код рисования для учета масштаба факторов. Обычно, когда вы рисуете метод drawRect: view или в методе drawLayer: inContext: метод делегата слоя, система автоматически настраивает графический контекст для учета для шкал факторов.
Нормально или всегда? и это справедливо только для поддерживаемого слоя представления или каждого слоя, который я добавляю в качестве подслоя для слоя подложки? потому что они также говорят:
Если ваше приложение создает слои без соответствующей точки зрения, масштабный коэффициент для каждого нового слоя объекта установлен в 1,0 изначально. Если вы не измените этот масштабный коэффициент , и если впоследствии вы нарисуете слой на экране с высоким разрешением , содержимое слоя автоматически масштабируется , чтобы компенсировать разницу в масштабных коэффициентах. Если вы не хотите, чтобы содержимое масштабировалось, вы можете изменить масштабный коэффициент слоя на 2.0, но если вы сделаете это без предоставления контента с высоким разрешением, ваш существующий контент может оказаться меньше, чем вы ожидали. Чтобы исправить ошибку , вам необходимо предоставить контент с более высоким разрешением для вашего слоя .
У меня возникли трудности, представляя себе слой без зрения, я могу себе представить иерархию слоев, но как только я хочу показать им, что я должен добавить его в качестве subhierachy отступающего слоя зрения, либо существуют ли какие-то другие средства для их использования (например, создание и просто рецензирование в контексте)?
Ядро композитинга двигатель Animation выглядит на свойство каждого слоя contentsScale определить содержимое этого слоя нужно ли масштабировать во время композитинга. Если ваше приложение создает слоев без соответствующего вида, каждый масштаб объекта будет иметь значение 1.0. Если вы не измените этот масштабный коэффициент , и если впоследствии вы нарисуете слой на экране с высоким разрешением , содержимое слоя будет автоматически масштабировано для компенсации за разницу в масштабных коэффициентах. Если вы не хотите, чтобы содержимое масштабировалось, вы можете изменить масштабный коэффициент слоя на 2.0, но если вы делаете это без предоставления контента с высоким разрешением, то существующий контент может оказаться меньше, чем вы ожидали. Чтобы исправить эту проблему , вам необходимо предоставить контент с более высоким разрешением для вашего слоя.
Что это значит? Когда я делаю что-то подобное layer.contents = (id)image.CGImage
Мне нужно установить contentsScale.
Должен ли я также установить его, когда мой слой рисует его содержимое, вызывая метод делегата drawLayer:inContext:
, а слой не является поддерживающим слоем представления?
В случае ** iOS ** это подробно объясняется здесь: https://stackoverflow.com/a/ 47760444/294884 и здесь: https://stackoverflow.com/a/47778332/294884 Надеюсь, это поможет кому-то. – Fattie