Подтвердить что ты не робот

Каково влияние 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.

4b9b3361

Ответ 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, панель навигации исчезла, а скрытое свойство было более резким.