2012-02-17 51 views
9

我有下面的菜单样式布局,模仿Facebook。我想在下面的左侧有一个阴影,但是我使用的图层阴影使得应用程序LAGGY成为可能。我一直无法找到一个好的替代解决方案。有没有人有创建不影响应用程序性能的阴影的替代方法?iOS:创建一个有偏色阴影

[self.navController.view.layer setShadowOffset:CGSizeMake(0, 1)]; 
[self.navController.view.layer setShadowColor:[[UIColor darkGrayColor] CGColor]]; 
[self.navController.view.layer setShadowRadius:8.0]; 
[self.navController.view.layer setShadowOpacity:0.8]; 

上面的代码是我目前正在使用,导致应用性能问题的代码。

以下图片是我想实现的,但不必使用上面的代码。

enter image description here

回答

10

这应有助于指定阴影路径,例如,

CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:self.navController.view.layer.bounds].CGPath; 
[self.navController.view.layer setShadowPath:shadowPath] 

按照CALayer documentation “通常指定明确的路径提高了渲染性能。”

+0

真棒!这帮助了很多,但我注意到一点点的表现仍然不坏。 – Bot 2012-02-17 22:46:46

0

我自己只会添加一个包含该阴影的UIView作为子视图,并在右侧视图动画时重新定位它。 (例如绘制层或核心显卡影子)

+0

添加太多视图会降低性能好友 – 2017-08-31 09:39:44

4

你可以插入意见边界并设置阴影路径:

UIEdgeInsets contentInsets = UIEdgeInsetsMake(10, 0, 0, 0); 
CGRect shadowPathExcludingTop = UIEdgeInsetsInsetRect(self.bounds, contentInsets); 
self.layer.shadowPath = [UIBezierPath bezierPathWithRect:shadowPathExcludingTop].CGPath;