2013-03-15 12 views
10

Desidero aggiungere un UIView al mio UIViewController ma voglio che diventi trasparente fino a quando decido di creare un Ovale all'interno di UIView.Rendere trasparente UIView

Fino a quando non creo l'ovale, posso impostare l'alfa della mia vista su 0 ma quando voglio aggiungere l'ovale, il colore dello sfondo è ancora nero.

ecco come si presenta con una serie di ovali

image

Nel mio 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]; 
} 

risposta

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

soluzione oh interessante! molte grazie – peter1234

22

Si prega di provare a utilizzare questo

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

In il tuo ViewController, potresti dire che opaco è NO. Diciamo che la tua vista è denominata myCustomView.

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

Oppure si può semplicemente andare al storyboard e deselezionare la casella di controllo opaca come- enter image description here