Каково влияние view.alpha = 0 vs view.hidden = YES?
Прозрачность - это зло, на устройствах iOS даже больше, чем на более тяжелых машинах. Поэтому я решил использовать view removeFromSuperView
сначала, если не применимо view.hidden=YES
и в качестве последнего средства view.alpha=0
. Но я действительно не знаю, что происходит за кулисами. Есть ли разница, особенно между двумя последними?
У меня есть сценарий UIView animateWithDuration:animations:completion:
, где, если вы поместите hidden = YES в блок завершения, он будет скрываться, не доведя окончания блока анимации. Поэтому я должен прибегнуть к альфа = 0.
Каковы штрафы одного над другим?
Cheers, EP.
Ответы
Ответ 1
Я не уверен, что представление с альфа 0.0 все еще нарисовано. Проверьте библиотеку документации:
Скрытие просмотров
Чтобы скрыть визуальный вид, , вы можете установить его скрытое свойство в YES или изменить его альфа-свойство на 0.0. Скрытый вид не получает событий касания от системы. Однако скрытые представления участвуют в авторезистировании и других операциях макета, связанных с иерархией представлений. Таким образом, скрытие представления часто является удобной альтернативой удалению представлений из вашей иерархии представлений, особенно если вы планируете вскоре отобразить представления в какой-то момент.
Я также нашел этот ответ здесь http://www.iphonedevsdk.com/forum/iphone-sdk-development/65525-whats-difference-between-alpha-0-hidden-yes.html
Это говорит:
Я считаю, что Cocoa Touch обращается и альфа менее 0,02, а также скрывается, так как ниже этого альфа-уровня это невидимо, а инженеры Apple решили, что невидимые элементы управления не должны быть интерактивными.
Использование альфа-значения требует, чтобы графическое оборудование смешало каждый пиксель с объектом со всем снизу. Он вычисляет интенсивность. С другой стороны, скрытый флаг - это переключатель. Если вы включите его, ОС знает, что ему вообще не нужно рисовать объект.
Ответ 2
Что-то с альфой ноль, все еще нарисовано, однако скрытое представление не перерисовывается на экране. Так как это происходит только в том случае, когда представление изменяется в любом случае, разница должна быть незначительной. Если у вас возникли проблемы с производительностью, я бы настоятельно рекомендовал профилирование с помощью инструментов профилирования времени и основных инструментов анимации.
Ответ 3
Одним из преимуществ настройки alpha вместо скрытого свойства является то, что альфа-свойство играет более красиво с анимацией. У меня была анимация, чтобы показать/скрыть мою панель навигации, и когда я использовал свойство alpha, панель навигации исчезла, а скрытое свойство было более резким.