2016-02-05 64 views
0

我不知道如果這是一個重複的問題,但隨時標記,如果它是。如何陰影添加到一個的CALayer對象之外?

我試圖將陰影添加到CALayer的外側。目前,我有,我已經與圓邊角做了CALayer的內UIImageView如圖所示:

CALayer * l = [ImageView layer]; 
[l setMasksToBounds:YES]; 
[l setCornerRadius:10.0]; 

我試圖添加額外的代碼:

[l setShadowOffset:CGSizeMake(0, 3)]; 
[l setShadowOpacity:0.4]; 
[l setShadowRadius:3.0f]; 
[l setShouldRasterize:YES]; 

結果顯示爲紅色,其中陰影是CALayer的,而不是外面內應用,這就是想什麼,我在綠實現沿邊緣:

enter image description here

如何在保持圓角的同時實現此目標?由於

回答

1

您可以使用UIBazierPath來實現這一目標:

UIBezierPath *shadow = [UIBezierPath bezierPathWithRect:imageview.bounds]; 
imageview.layer.masksToBounds = NO; 
imageview.layer.shadowColor = [UIColor redColor].CGColor; 
imageview.layer.shadowOffset = CGSizeMake(0.0f, 5.0f); 
imageview.layer.shadowOpacity = 0.5f; 
imageview.layer.shadowPath = shadowPath.CGPath; 

這裏masksToBounds = NO所以層子層可以延長boundry的視圖陰影效果。

+0

是這樣的作品,但由於'maskToBounds = NO',圓角半徑現已刪除 – Pangu

+0

是的,我知道這會發生衝突,這就是爲什麼我提到關於masktobound。 – KDeogharkar