web-dev-qa-db-ja.com

UIViewを透明にする

UIViewControllerにUIViewを追加したいのですが、UIView内にOvalを作成することを決定するまで、UIViewを透明にしたいです。

楕円を作成するまで、ビューのアルファを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];
}
16
peter1234
- (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];
}
16
Guo Luchuan

これを使ってみてください

view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
view.opaque = NO;
26
Dharmbir Singh

ViewControllerでは、不透明はNOと言えます。たとえば、ビューの名前がmyCustomViewだとします。

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

または、ストーリーボードに移動して、不透明なチェックボックスをオフにすることもできます enter image description here

5
Natasha

Swift 3.x:(ここでlayerview)です)

layer.backgroundColor = UIColor.clear.cgColor
layer.isOpaque = false
2
Matt

ここで推奨されているのと同じ方法でUIViewControllerの背景を半透明にしましたが、modalPresentationStyle。customに設定するまで機能しませんでした。

Swift 4コード:

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

現在の(コントローラー、アニメーション、完了)メソッドを使用して、別のコントローラーからコントローラーを開きます。

1