Какое влияние оказывает view.alpha = 0 против view.hidden = YES? - PullRequest
35 голосов
/ 28 февраля 2011

Прозрачность - зло, на устройствах iOS даже больше, чем на более тяжелых машинах.Поэтому я решил сначала использовать view removeFromSuperView, если не применимо view.hidden=YES и в крайнем случае view.alpha=0.Но я на самом деле не знаю, что происходит за кулисами.Есть ли разница, особенно между последними двумя?

У меня есть сценарий UIView animateWithDuration:animations:completion:, где, если вы положите hidden = YES в блок завершения, он будет скрыт, не давая блоку анимации завершиться.Поэтому я должен прибегнуть к альфа = 0.

Каковы штрафы одного над другим?Приветствия, EP.

Ответы [ 3 ]

66 голосов
/ 22 ноября 2011

Я не уверен, что вид с альфа 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 решили, что невидимые элементы управленияне должен быть кликабельным.

Использование альфа-значения требует, чтобы графическое оборудование смешивало каждый пиксель объекта со всем под ним.Это интенсивный компьютер.Скрытый флаг, с другой стороны, является переключателем.Если вы включите его, ОС знает, что ему вообще не нужно рисовать объект.

3 голосов
/ 12 апреля 2012

Одним из преимуществ установки альфы вместо скрытого свойства является то, что свойство альфа лучше работает с анимацией.У меня была анимация, чтобы показать / скрыть панель навигации, и когда я использовал альфа-свойство, панель навигации исчезла, а скрытое свойство было более резким.

2 голосов
/ 28 февраля 2011

Нечто, имеющее альфа-ноль, по-прежнему рисуется, однако скрытое представление не перерисовывается на экране. Так как это происходит только тогда, когда вид меняется в любом случае, разница должна быть незначительной. Если у вас возникают проблемы с производительностью, я настоятельно рекомендую выполнить профилирование с помощью профилировщика времени и основных инструментов анимации.

...