Производительность UIView: непрозрачная, backgroundColor, cleararsContextBeforeDrawing?
Я показываю непрозрачные PNG с UIImageView
внутри супервизора с белым фоном. Что лучше всего подходит для производительности?
UIImageView
По умолчанию
opaque = NO
, backgroundColor = nil
, clearsContextBeforeDrawing = YES
.
-
Ссылка на класс UIView: backgroundColor говорит: "[ nil
] приводит к прозрачному цвету фона". Если я установил UIView
opaque
свойство на YES
, должен также установить его backgroundColor
на [UIColor clearColor]
, или что лишняя строка кода и обработка ненужны? I.e., [UIColor clearColor]
считается непрозрачным (непрозрачным)?
-
Значит ли значение clearsContextBeforeDrawing
для непрозрачных представлений?
Комментарии для clearsContextBeforeDrawing
в UIView.h
говорят, что он игнорируется для непрозрачных представлений.
Но Ссылка на класс UIView: cleararsContextBeforeDrawing говорит:
Если свойство views opaque
также установлено на YES
, свойство backgroundColor
представление не должно быть nil
или могут возникнуть ошибки чертежа.
Что это?
Похожие вопросы
Ответы
Ответ 1
Предполагая, что ваши PNG всегда заполняют весь UIImageView
, вы должны получить лучшую производительность, используя:
opaque = YES
, clearsContextBeforeDrawing = NO
. В этом режиме backgroundColor
не имеет значения. Пиксели просто заменяются новыми данными изображения.
Для прозрачных PNG на одноцветном фоне наиболее быстрым будет:
opaque = YES
, clearsContextBeforeDrawing = YES
и backgroundColor
соответствуют всем необходимым. В этом случае [UIColor whiteColor]
.
Ответ 2
Если для свойства UIView opaque установлено значение YES, вы должны убедиться, что ваш рисунок полностью заполняет представление без прозрачности. Таким образом, вам нужно установить белый цвет фона (четкий не будет работать, потому что это непрозрачно).
Я не думаю, что вы хотите изменить настройки по умолчанию для своего изображения, но вы должны убедиться, что ваши PNG не имеют прозрачности (то есть не имеют альфа-канала, вы можете проверить это в инспекторе предварительного просмотра; он не говорит "Имеет Альфу".). Я считаю, что UIImageView будет делать все правильно, если вы придадите ему непрозрачный образ.
В зависимости от того, что в фоновом режиме, вы можете получить более высокую производительность с opaque = YES и белым фоном для ваших изображений, (чтобы предотвратить перерисовку частей родительского представления), но я не стал бы запускать этот путь.