使UIView透明化

时间:2013-03-15 05:07:59

标签: ios uiview screen transparent

我想在我的UIViewController中添加一个UIView,但我希望它是透明的,直到我决定在UIView中创建一个Oval。

在我创建椭圆之前,我可以将视图的alpha设置为0,但是当我想添加椭圆时,背景颜色仍为黑色。

这是一堆椭圆的样子

image

在我的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];
}

5 个答案:

答案 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;   
}

或者您可以转到故事板并取消选中不透明的复选框,例如 - enter image description here

答案 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(控制器,动画,完成)方法从另一个控制器中打开控制器。