根据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 '确实在屏幕上显示了alpha(它不是预期的不透明)
这怎么可以做,可以做些什么?
答案 0 :(得分:109)
我认为这是文档中的错误。你应该在bugreport.apple.com上提交。
经过一些快速研究后,我能看到的一切都表明你所看到的是它总是表现得如何,我自己的测试也表明了这一点。
视图的alpha应用于所有子视图。
也许您需要的只是[[UIColor blackColor] colorWithAlphaComponent:0.5]
但如果不是,您将需要将视图视为兄弟而不是孩子。
答案 1 :(得分:40)
不要直接在父视图上设置alpha。而不是使用下面的代码行,它将透明度应用于父视图而不影响其子视图。
[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];
答案 2 :(得分:24)
快速
view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
更新SWIFT 3
view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
答案 3 :(得分:15)
如果您喜欢故事板,请在User Defined Runtime Attribute
中为您的观点添加Identity Inspector
:
Key Path: backgroundColor
,Type: Color
,Value:
例如白色,不透明度为50%。
答案 4 :(得分:15)
设置背景颜色的不透明度而不是alpha不会影响其子视图。
或者您可以通过程序设置
var customView:UIView = UIView()
customView.layer.opacity = 0.3
多数民众赞成。快乐的编码!!!
答案 5 :(得分:6)
讨论的最简单的解决方案是更改alpha,如下所示: 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
答案 6 :(得分:2)
这是一个有点复杂的解决方案:
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
中的子视图
答案 7 :(得分:1)
目前只有一种方法可以让父视图透明,不要将任何子视图放在里面(不要把任何视图作为子视图)放在父视图中父视图之外的子视图。要使父视图透明,您可以通过故事板进行此操作。
//Transparent the parentView
parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
将另一个视图放在父视图之外。它会像魅力一样发挥作用。
答案 8 :(得分:0)
在Swift 4.2和Xcode 10.1中
不要通过情节提要添加视图颜色和Alpha值。在这种情况下,只有程序化方法才行。
transparentView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
答案 9 :(得分:0)
请参阅Xcode文档中的粗体描述。
此属性的值是0.0到1.0范围内的浮点数,其中0.0表示完全透明,而1.0表示完全不透明。更改此属性的值只会更新当前视图的alpha值。 但是,该Alpha值赋予的透明度会影响该视图的所有内容,包括其子视图。例如,一个Alpha值为1.0的子视图嵌入到具有Alpha值的父视图中。 0.5,就好像它的alpha值也是0.5一样出现在屏幕上。