我正在考虑在UIView的底部和右侧添加投影,但我发现所有解决方案都为视图的四边添加了阴影。有办法解决这个问题吗?
答案 0 :(得分: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 :(得分:1)
我可以通过在视图的底部和右侧添加两个带有拉伸阴影图像的UIImageView来实现。您不必使用这些UIImageViews覆盖所有视图,只需剪切所需的内容即可。看看iPhone上的twitter颜色混合层,我相信这些美丽的阴影是使用UIImageViews创建的。这节省了系统资源。当然你可以使用CALayer创建阴影,但我认为它会消耗更多的系统资源来渲染阴影,所以CALayer是我的第二选择。
答案 2 :(得分: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;