2013-03-15 19 views
10

UIViewController'a UIView eklemek istiyorum ancak UIView içinde bir Oval oluşturmaya karar verene kadar şeffaf olmasını istiyorum.UIView transparent yapma

Oval oluşturmadan önce, görünümümün alpha değerini 0 olarak ayarlayabilirim ancak oval eklemek istediğimde arka plan rengi hala siyah.

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

cevap

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 ilginç bir çözüm gibi- opak onay kutusunun işaretini kaldırın olabilir! çok teşekkürler – peter1234

22

bu bir

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

kullanmayı deneyin: Burada

o oval

benim UIView olarak

image

bir grup ile böyle görünüyor İçinde ViewController, opaklığın HAYIR olduğunu söyleyebilirsin. Diyelim ki, görünümünüze myCustomView adı verildi.

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

Ya da sadece storyboard gidip enter image description here