2013-03-15 13 views
10

Chcę dodać UIView do mojego UIViewController, ale chcę, aby było przezroczyste, dopóki nie zdecyduję się utworzyć Oval wewnątrz UIView.Tworzenie UIView przezroczysty

Dopóki nie utworzę owalu, mogę ustawić alfa mojego widoku na 0, ale gdy chcę dodać owal, kolor tła jest nadal czarny.

oto jak to wygląda z gronem owali

image

W moim 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]; 
} 

Odpowiedz

13
- (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]; 
} 
+0

oh ciekawe rozwiązanie! wielkie dzięki – peter1234

22

Spróbuj użyć tego jeden

view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0]; 
view.opaque = NO; 
5

W Twój ViewController, możesz powiedzieć, że opaque to NO. Załóżmy, że Twój widok nazywa się myCustomView.

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

Albo może po prostu udać się do ujęć i odznacz pole wyboru nieprzezroczyste jak- enter image description here

Powiązane problemy