Программирование iPhone: применение Alpha к родительскому, но не к детским представлениям
Можно ли установить Alpha в .75 или .50 (прозрачный) для Parent view, но представления/элементы Child неактуальны (альфа-канал 1.0 - полностью видимый).
Всякий раз, когда я устанавливаю Alpha моего основного UIView в прозрачный, все дочерние представления/элементы управления также отображаются как прозрачные. Есть ли способ обхода?
Ответы
Ответ 1
Родитель, который действует как ваш фон, должен быть заменен на сестру перед контейнером, который обертывает ваших детей. Таким образом, вы можете установить прозрачность, не затрагивая всю иерархию.
Это будет выглядеть так.
-
<item-container>
-
<item-background>
-
<children-container>
Эта иерархия будет иметь тот же порядок видимости и позволит вам установить непрозрачность независимо от содержимого контейнера children.
Ответ 2
Можно сделать еще один простой способ, не делая вид сестры. Не устанавливайте альфа непосредственно в родительском представлении. Вместо этого используйте
[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];
Теперь любое дочернее представление может иметь свой собственный цвет и НЕ будет прозрачным.
В Swift это будет
parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)
Ответ 3
Я знаю, что это поздний ответ, и что-то уже принято, но я нашел лучшее решение для меня - не устанавливать прозрачность UIView
напрямую, а вместо этого устанавливать цвет фона в 0,0,0, 0, делая цвет полностью прозрачным.
Ответ 4
Не 100% уверены, что вы пытаетесь сделать, но если вы хотите иметь контейнерный вид с прозрачным фоном, вы можете сделать это, установив свойство backgroundColor в [UIColor clearColor]. Таким образом, вы можете видеть на заднем плане, но все подпункты останутся непрозрачными. Если вы хотите, чтобы фон был полупрозрачным, используйте [UIColor colorWithRed: green: blue: alpha:].
Если вы хотите, чтобы весь вид был полупрозрачным, а другие - нет, вам нужно будет сделать их братьями и сестрами.