UIViewControllerにUIViewを追加したいのですが、UIView内にOvalを作成することを決定するまで、UIViewを透明にしたいです。
楕円を作成するまで、ビューのアルファを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];
}
- (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];
}
これを使ってみてください
view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
view.opaque = NO;
Swift 3.x:(ここでlayerはview)です)
layer.backgroundColor = UIColor.clear.cgColor
layer.isOpaque = false
ここで推奨されているのと同じ方法でUIViewControllerの背景を半透明にしましたが、modalPresentationStyleを。customに設定するまで機能しませんでした。
私Swift 4コード:
modalPresentationStyle = .custom
view.isOpaque = false
view.backgroundColor = UIColor.black.withAlphaComponent(0.2)
現在の(コントローラー、アニメーション、完了)メソッドを使用して、別のコントローラーからコントローラーを開きます。