2012-04-15 209 views

回答

1

我可以通過在視圖的底部和右側添加兩個具有拉伸陰影圖像的UIImageView來實現。您不必使用這些UIImageView覆蓋所有視圖,只需根據需要剪切即可。看看iPhone上的顏色混合圖層,我相信這些美麗的陰影是通過使用UIImageView創建的。這節省了系統資源。當然,您可以使用CALayer創建陰影,但我認爲它會消耗更多系統資源來渲染陰影,因此CALayer是我的第二選擇。

19

您可以使用CAGradientLayer像這樣,

CAGradientLayer *shadow = [CAGradientLayer layer]; 
shadow.frame = CGRectMake(-10, 0, 10, myView.frame.size.height); 
shadow.startPoint = CGPointMake(1.0, 0.5); 
shadow.endPoint = CGPointMake(0, 0.5); 
shadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 
[myView.layer addSublayer:shadow]; 

你必須改變frame,以滿足您的需求。此示例沿着左側視圖的高度顯示陰影。您還可以更改開始點和結束點以控制陰影的方向。

+1

有沒有辦法使用CALayer的shadowOffset和shadowRadius來實現目標? – tom 2012-04-16 01:04:42

+0

我想你可以通過改變框架來做到這一點。 – edc1591 2012-04-16 01:34:31

0
UIBezierPath *shadowPath = [UIBezierPath 
bezierPathWithRect:self.yourViewObj.bounds]; 
self.yourViewObj.layer.masksToBounds = NO; 
self.yourViewObj.layer.shadowColor = [UIColor blackColor].CGColor;//*** color you want for shadow 
self.yourViewObj.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 
self.yourViewObj.layer.shadowOpacity = 0.7f; 
self.yourViewObj.layer.shadowPath = shadowPath.CGPath;