【发布时间】:2013-09-11 23:28:23
【问题描述】:
根据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(它不像预期的那样不透明)
这是怎么回事?可以做什么?
【问题讨论】:
-
也许添加子视图和设置 alpha 的顺序很重要。尝试使用不同的序列。
-
添加创建 anotherView 的所有代码 :) 而且我认为这是错字但你确定你初始化
self.myView吗?并添加 anotherView 例如[self.self addSubview:self.myView]; -
确实,文档是正确的:这不会影响 其嵌入的子视图,并且子视图的 alpha 始终相同——但呈现的视图有一个
alpha值是所有子视图的alpha值,相乘。例如如果 subviews alpha0.8和 superview 的 alpha 是1.0,但是你把它改成0.6,subviews alpha 还是一样的,0.8。渲染的子视图的 alpha 值仅从0.8更改为0.48。
标签: ios objective-c cocoa-touch uiview alpha-transparency