2011-11-08 18 views
6

Bir uçtan yüklenmiş bir UIView alt sınıfım var ve etrafta çizilecek bir gölge bulamıyorum. Uzunca bir süredir tüm manzaranın etrafında görünecek bir gölge almaya çalışıyorum. Daha sonra animasyonunu basitleştirmek için kendi alt katmanına yerleştirmeyi seçtim. Ben, shadowLayer özelliği NSLog koordinatlar ve çerçeve doğru olduğundaGölge, CALayer kullanarak UIView için görünmüyor

-(void)awakeFromNib 
{ 
    self.clipsToBounds = NO; 

    // set up the shadow layer 
    CALayer *shadow = [CALayer layer]; 
    shadow.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.bounds.size.width, self.bounds.size.height); 
    shadow.shadowColor = [UIColor blueColor].CGColor; 
    shadow.shadowRadius = 15.0; 
    shadow.opacity = 1.0; 
    [self.layer addSublayer:shadow]; 
    // I set this property so I have access to it later to more easily animate it. 
    self.shadowLayer = shadow; 
} 

: İşte kod. Yedeklediği manzaraya uyuyor.

Ayrıca self.layer kenarlık ve köşe yarıçapı ayarlıyorum ve doğru görünüyor. Bu gölgeyi self.layer'a koyarsam görünür fakat benim ana UIView'un tüm alt görünümlerini kapsar.

Her türlü yardım büyük beğeni topluyor.

cevap

3

QuartzCore içe aktardığınız varsayılıyor. &'u UIView'a bir kenarlık oluşturmanız gerektiğini ayarlamanız gerektiğini düşünüyorum. yolu borderRadius Kenara bu [self roundedLayerWithShadow:yourView.layer radius:5.0f];

- (void)roundedLayerWithShadow:(CALayer *)viewLayer 
         radius:(float)r 
{ 
    [viewLayer setMasksToBounds:YES]; 
    [viewLayer setCornerRadius:r];   
    [viewLayer setBorderColor:[RGB(180, 180, 180) CGColor]]; 
    [viewLayer setBorderWidth:1.0f]; 

    [viewLayer setShadowColor:[RGB(0, 0, 0) CGColor]]; 
    [viewLayer setShadowOffset:CGSizeMake(0, 0)]; 
    [viewLayer setShadowOpacity:1]; 
    [viewLayer setShadowRadius:2.0]; 
    return; 
} 
+0

İki gölgem varsa ne olur? –

-2

kullanmak, sizin shadow tabaka çok şeffaf görünüyor. Bu nedenle shadow.superlayer'da herhangi bir gölge düşürmeyecektir.

+0

Gölge mavi ve opaktır. Anlayabildiğim kadarıyla görünür olmamalı. – bryanjclark

0

Aynı şeyle uğraştım ve shadowOpacity değerini 1.0'a ayarlamanız gerekiyor. Kodunuzda shadowOpacity yerine opacity kullanın. Bu benim de aynı sorun.