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

Программирование iPhone: применение Alpha к родительскому, но не к детским представлениям

Можно ли установить Alpha в .75 или .50 (прозрачный) для Parent view, но представления/элементы Child неактуальны (альфа-канал 1.0 - полностью видимый).

Всякий раз, когда я устанавливаю Alpha моего основного UIView в прозрачный, все дочерние представления/элементы управления также отображаются как прозрачные. Есть ли способ обхода?

4b9b3361

Ответ 1

Родитель, который действует как ваш фон, должен быть заменен на сестру перед контейнером, который обертывает ваших детей. Таким образом, вы можете установить прозрачность, не затрагивая всю иерархию.

Это будет выглядеть так.

  • <item-container>
    • <item-background>
    • <children-container>
      • <children/>

Эта иерархия будет иметь тот же порядок видимости и позволит вам установить непрозрачность независимо от содержимого контейнера 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:].

Если вы хотите, чтобы весь вид был полупрозрачным, а другие - нет, вам нужно будет сделать их братьями и сестрами.