2011-11-08 54 views
6

我從筆尖加載的子類UIView,而我不能讓一個影子在周圍畫。我試圖在相當長一段時間內在整個視野中出現陰影。我選擇將它放置在自己的子圖層中,以便稍後簡化動畫。下面的代碼:陰影中沒有顯示的UIView使用的CALayer

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

當我NSLogshadowLayer屬性,座標和框架是正確的。這與它所支持的觀點相符。

我還設置上self.layer邊框顏色和圓角半徑,並正確顯示。如果我把陰影self.layer出現,但它包括我的父母UIView的所有子視圖。

任何幫助,非常感謝。

回答

3

我假設你已經QuartzCore進口。我認爲你需要設置&創建一個邊界到UIView。使用此[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

如果我有兩個陰影怎麼辦? –

-2

除了borderRadius的方式,你shadow層看起來非常透明。因此它不會在shadow.superlayer上掉落任何影子。

+0

陰影是藍色和不透明的。據我所知,沒有理由不應該可見。 – bryanjclark

0

我用相同的奮鬥,和原來你需要設置shadowOpacity 1.0。在您的代碼中,您意外地使用了opacity而不是shadowOpacity。這是我的問題。