对此问题似乎有很多想法,以及SO问题。但是,有些人说某些代码有效。例如:
[self.layer setShadowOffset:CGSizeMake(1, 3)];
[self.layer setShadowOpacity:0.9];
[self.layer setShadowRadius:3.0f];
[self.layer setShouldRasterize:YES];
[self.layer setCornerRadius:12.0f];
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:12.0f] CGPath]];
应同时应用12.0f角半径和阴影。但它不起作用。当我使用这个代码时,我得到阴影,但没有角半径。
据我所知,这是因为我需要将clipsToBounds设置为YES。但是,这反过来否定了阴影。
我做错了什么或者上面的代码不起作用?
此外,人们说要克服这个问题的好方法是创建一个单独的阴影图层,然后添加它。
但是如何在UIView的drawRect中执行此操作:? - 示例代码会很棒!
谢谢!
答案 0 :(得分:0)
您的代码看起来不错我已经尝试过您的代码,它可以和我一起使用。
确保rect
中使用的[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:12.0f] CGPath]]
是正确的,如果您使用黑色背景,则无法看到阴影。
我在我的代码中尝试了这个。这是工作代码.......
[self.EnterQtyView.layer setShadowOffset:CGSizeMake(1, 5)];
[self.EnterQtyView.layer setShadowOpacity:1.0];
[self.EnterQtyView.layer setShadowRadius:5.0f];
[self.EnterQtyView.layer setShouldRasterize:YES];
[self.EnterQtyView.layer setCornerRadius:12.0f];
[self.EnterQtyView.layer setShadowPath:[[UIBezierPath bezierPathWithRoundedRect:self.EnterQtyView.frame cornerRadius:12.0f] CGPath]];
希望这会对你有帮助.................