Согласно документации для 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];
А затем добавьте subviews в myView
[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected
Но у ' anotherView ' есть альфа - канал на экране (он не непрозрачен, как ожидалось)
Как это может быть и что делать?
ios
objective-c
uiview
alpha-transparency
Авнер Барр
источник
источник
self.myView
? и добавить еще один вид , например[self.self addSubview:self.myView];
alpha
значение, которое являетсяalpha
умноженными значениями всех подвидов . например , если подвиды альфа0.8
и альфа в SuperView было1.0
, но изменить его0.6
, то подвиды альфа остается такой же,0.8
. альфа-значение визуализированного подвида изменяется только с0.8
на0.48
.Ответы:
Думаю, это ошибка в документации. Вы должны подать его на bugreport.apple.com.
Все, что я вижу после небольшого быстрого исследования, предполагает, что вы видите то, как оно всегда себя вело, и мое собственное тестирование тоже это показывает.
Альфа представления применяется ко всем подпредставлениям.
Возможно, все, что вам нужно, это,
[[UIColor blackColor] colorWithAlphaComponent:0.5]
но если нет, вам нужно будет сделать представление родным, а не дочерним.источник
Не устанавливайте альфу непосредственно для родительского представления. Вместо этого используйте следующую строку кода, которая применит прозрачность к родительскому представлению, не затрагивая его дочерние представления.
[parentView setBackgroundColor: [[UIColor clearColor] colorWithAlphaComponent: 0,5]];
источник
Быстро
view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
ОБНОВЛЕНО ДЛЯ SWIFT 3
view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
источник
Установка непрозрачности цвета фона вместо альфа не повлияет на его дочерние представления.
Или вы можете установить программно
var customView:UIView = UIView() customView.layer.opacity = 0.3
Это оно. Удачного кодирования !!!
источник
Если вам нравятся раскадровки, поставьте отметку
User Defined Runtime Attribute
для своего представления вIdentity Inspector
:Key Path: backgroundColor
,Type: Color
,Value:
Например , белого цвета с непрозрачностью 50%.источник
Самое простое решение, как обсуждалось, - изменить альфа следующим образом: Обновленная версия для Xcode 8 Swift 3:
yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
Цель C:
yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
См. Документацию разработчика Apple здесь: https://developer.apple.com/reference/uikit/uiview/1622417-alpha
источник
В Swift 4.2 и Xcode 10.1
Не добавляйте цвет и альфа-значение с помощью раскадровки. В этом случае подойдет только программный подход.
transparentView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
источник
Вот немного сложное решение:
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
.источник
На данный момент есть только один способ сделать Parent View прозрачным и не помещать никаких дочерних представлений внутри (не помещать какие-либо представления в качестве subview) родительского представления, поместить эти дочерние представления за пределы родительского представления. Чтобы сделать родительский вид прозрачным, вы можете сделать это с помощью раскадровки.
//Transparent the parentView parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
Поместите другое представление за пределы родительского представления. Это будет работать как шарм.
источник
См. Описание, выделенное жирным шрифтом, в документации Xcode.
источник