我想在我的UIViewController中添加一个UIView,但我希望它是透明的,直到我决定在UIView中创建一个Oval。
在我创建椭圆之前,我可以将视图的alpha设置为0,但是当我想添加椭圆时,背景颜色仍为黑色。
这是一堆椭圆的样子
在我的UIView中:
- (void)drawRect:(CGRect)rect
{
[self pushContext];
UIBezierPath *oval = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
[[UIColor redColor] setFill];
[oval fill];
self.opaque = NO;
[self setBackgroundColor:[UIColor clearColor]];
[oval addClip];
[self setBackgroundColor:[UIColor clearColor]];
[self popContext];
}
答案 0 :(得分:25)
请尝试使用此
view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
view.opaque = NO;
答案 1 :(得分:15)
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.opaque = NO;
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.0] setFill];
UIRectFill(rect);
[self pushContext];
UIBezierPath *oval = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
[[UIColor redColor] setFill];
[oval fill];
[oval addClip];
[self popContext];
}
答案 2 :(得分:5)
在ViewController中,你可以说opaque是NO。比方说,您的视图名为myCustomView。
- (void)viewDidLoad {
[super viewDidLoad];
self.myCustomView.opaque = NO;
}
答案 3 :(得分:1)
在Swift 3.x中:(其中图层是视图)
layer.backgroundColor = UIColor.clear.cgColor
layer.isOpaque = false
答案 4 :(得分:0)
我按照建议的方式为UIViewController设置了半透明背景,但是直到将 modalPresentationStyle 设置为 .custom
时,该方法才起作用我的 Swift 4 代码:
modalPresentationStyle = .custom
view.isOpaque = false
view.backgroundColor = UIColor.black.withAlphaComponent(0.2)
我使用present(控制器,动画,完成)方法从另一个控制器中打开控制器。