2016-07-01 47 views

回答

3
//Drop Shadow 
[view.layer setShadowColor: [UIColor grayColor].CGColor]; 
[view.layer setShadowOpacity:0.8]; 
[view.layer setShadowRadius:3.0]; 
[view.layer setShadowOffset:CGSizeMake(2.0, 2.0)]; 
0

那些不是灯光,而是阴影。您可以使用图层为UI元素绘制阴影。

2

请一次试试这个: -

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

说明: - 正如所看到的最后一步有添加使用核心动画阴影时,需要一些不同的属性。如果你不熟悉核心动画,不要担心,只是试图专注于影子代码而不是视图上的CALayer

shadowOffset是一个CGSize,表示距离路径有多远以抵消阴影。

shadowColor是阴影的颜色。阴影颜色应该始终是不透明的,因为不透明度将由shadowOpacity属性设置。 shadowColor财产是CGColor而不是UIColor

shadowRadius是沿阴影路径

shadowOpacity阴影的宽度决定了阴影的不透明度。

shadowPath可能是最重要的属性。虽然可以绘制阴影而不指定路径,但出于性能原因,您应该始终指定一个阴影。这条道路告诉核心动画视图的不透明区域,如果没有它,事情会变得非常缓慢!这是一个CGPath,这是最容易使用UIBezierPath(仅适用于iOS)如步骤2所示。

其他位于http://nscookbook.com/2013/01/ios-programming-recipe-10-adding-a-shadow-to-uiview/

+0

指定阴影路径作为边界视图是不是一个好主意,除非在图像FILLS视图。对于缩放到适合视图而非填充视图的图像,您希望阴影从图像本身中删除,而不是边界视图。不指定阴影路径。 – Dale