我一直在寻找答案,并且尝试自己解决这个问题,但是我没有,我认为这是最好的答案。所以我试图完成一些简单的事情,但是我找不到解决方法。我认为我在概念上缺少一些东西。这是我尝试在子类化UIView的类中创建半透明矩形的方法:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
//this should be white color with 0.7 opacity right
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.7);
CGContextFillRect(context, self.bounds);
}
好的,这只会使颜色变成灰色。我也尝试过此方法,但结果相同:CGContextSetRGBFillColor(context,1.0,1.0,1.0,1.0);
CGContextSetAlpha(context,0.7);
另一种尝试:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(context, self.bounds);
self.alpha = 0.7;
}
瞧!我解决了 但不完全是。我想在上下文中绘制一个半透明的矩形,而不是使整个视图透明。然后例如添加另一个完全不透明的矩形。很想听听您的想法。谢谢。
我想您看不到矩形透明度的原因是视图中存在背景色。
您是否可以尝试像这样设置视图背景颜色:
self.backgroundColor = [UIColor clearColor];
顺便说一句,此语句以及设置您的自定义视图属性(例如self.alpha = 0.7;
)的任何语句都应加入该init
方法。
编辑:
正如@borrrden指出的那样,要设置技巧的真正属性可能是opaque
。YES
根据Apple Docs,通常将其设置为以下含义:
不透明视图应使用完全不透明的内容填充其边界,也就是说,该内容的Alpha值应为1.0。如果视图是不透明的,或者不填充其边界或包含全部或部分透明的内容,则结果是不可预测的。如果视图是完全或部分透明的,则应始终将此属性的值设置为NO。
将背景色设置为clearColor
可能会将此属性的值设置NO
为附带效果。
编辑:
我不明白您为什么要覆盖drawRect
一个UIView
半透明矩形来绘制半透明矩形,这也许是因为我不知道您要做什么。无论如何,您可能想研究的另一种方法是使用nestedUIViews
或nested CALayers
,您可以在其中分配不同的alpha
/ opacity
。
如果您只是对不透明程度不同的矩形感兴趣,那么这就像UIViews
在父视图中嵌套并为它们分配半透明的背景色一样简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句