Установка Альфа на UIView устанавливает Альфа на его подвидах, которые не должны происходить
согласно документации для UIVIew @property(nonatomic) CGFloat alpha
значение этого свойства является числом с плавающей запятой в диапазоне 0.0 до 1.0, где 0.0 представляет собой полностью прозрачный и 1.0 представляет собой совершенно непрозрачный. это значение влияет только на текущий вид и не влияет ни на один из его встроенных подвидов.
у меня есть представление контейнера, настроенное следующим образом:
self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];
а затем добавить подвиды 'myView'
[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected
а 'anotherView ' имеет Альфа на экране (это не Непрозрачно, как ожидалось)
как это может быть и что можно сделать?
8 ответов:
Я думаю, это ошибка в документации. Вы должны подать его по адресу bugreport.apple.com.
все, что я вижу после небольшого быстрого исследования, предполагает, что вы видите, как он всегда вел себя, и мое собственное тестирование тоже это показывает.
Альфа вида применяется ко всем подвидам.
возможно, все, что вам нужно-это
[[UIColor blackColor] colorWithAlphaComponent:0.5]
но если нет, вам нужно будет сделать вид родного брата вместо ребенка.
Не устанавливайте Альфа непосредственно на родительском представлении. Вместо этого используйте нижеприведенную строку кода, которая будет применять прозрачность к parentview, не затрагивая его дочерние представления.
[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];
быстро
view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
ОБНОВЛЕНО ДЛЯ SWIFT 3
view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
Если вам нравятся раскадровки, поставьте
User Defined Runtime Attribute
для вашего взгляда вIdentity Inspector
:
Key Path: backgroundColor
,Type: Color
,Value:
например, белый цвет с непрозрачностью 50 %.
установка непрозрачности цвета фона вместо альфа не повлияет на его дочерние представления.
- выберите вид.
- перейти к инспектору атрибутов, чем цвет фона
- нажмите на "другие"
- установите непрозрачность на 30%
вот и все. Счастливого Кодирования!!!
самое простое решение, как обсуждалось, чтобы изменить Альфа следующим образом : Обновленная версия для Xcode 8 Swift 3:
yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
Цель C:
yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
см. Apple Developer Docs здесь : https://developer.apple.com/reference/uikit/uiview/1622417-alpha
вот немного сложное решение:
UIView *container; UIView *myView; UIView *anotherView; myView.alpha = 0.5; [container addSubview:myView]; anotherView.alpha = 1; [container addSubview:anotherView];
использовать
container
посмотреть в суперпанель,anotherView
иmyView
оба подвида вcontainer
,anotherView
не является подвидом вmyView
.
на данный момент есть только один способ сделать Родительский Вид прозрачный и не помещайте никаких дочерних представлений внутри (не помещайте никаких представлений в качестве подвида) родительского представления, поместите эти дочерние представления за пределы родительского представления. Чтобы сделать Родительский вид прозрачным, вы можете сделать это с помощью раскадровки.
//Transparent the parentView parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
поместите другой вид вне родительского вида. Он будет работать как шарм.