18

我想向我的 UIViewController 添加一个 UIView,但我希望它是透明的,直到我决定在 UIView 内创建一个椭圆形。

在创建椭圆之前,我可以将视图的 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];
}
4

5 回答 5

28

请尝试使用这个

view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
view.opaque = NO;
于 2013-03-15T05:17:28.873 回答
18
- (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];
}
于 2013-03-15T05:24:13.100 回答
5

在你的 ViewController 中,你可以说 opaque 是 NO。假设您的视图名为 myCustomView。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.myCustomView.opaque = NO;   
}

或者你可以去情节提要并取消选中不透明的复选框,例如 - 在此处输入图像描述

于 2016-01-01T14:38:34.217 回答
3

在 Swift 3.x 中:(其中layerview

layer.backgroundColor = UIColor.clear.cgColor
layer.isOpaque = false
于 2018-08-07T12:44:57.217 回答
2

我为我的 UIViewController 做了半透明背景,就像这里推荐的一样,但是直到我将modalPresentationStyle设置为.custom后它才起作用

我的Swift 4代码:

modalPresentationStyle = .custom
view.isOpaque = false
view.backgroundColor = UIColor.black.withAlphaComponent(0.2)

我使用 present(controller, anim, completion) 方法从另一个控制器打开我的控制器。

于 2018-09-15T16:09:01.927 回答