为具有圆angular的UIImageView创build阴影?

我正在尝试创build一个具有圆angular和阴影的ImageView ,以提供一些深度。 我能够为UIImageView创build一个阴影,但每当我添加代码也使其具有圆angular时,它只有圆angular而没有阴影。 我有一个名为myImageIBOutlet ,它位于viewDidLoad函数内部。 有没有人有任何想法如何使其工作? 我究竟做错了什么?

 override func viewDidLoad() { super.ViewDidLoad() myImage.layer.shadowColor = UIColor.black.cgColor myImage.layer.shadowOpacity = 1 myImage.layer.shadowOffset = CGSize.zero myImage.layer.shadowRadius = 10 myImage.layer.shadowPath = UIBezierPath(rect: myImage.bounds).cgPath myImage.layer.shouldRasterize = false myImage.layer.cornerRadius = 10 myImage.clipsToBounds = true } 

如果将clipsToBounds设置为true ,则会绕过angular点,但会阻止阴影的出现。 为了解决这个问题,你可以创build两个视图。 容器视图应该有阴影,其子视图应该有圆angular。

容器视图将clipsToBounds设置为false ,并应用阴影属性。 如果你想要阴影也被舍入,使用UIBezierPath构造函数,它包含一个roundedRectcornerRadius

 let outerView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) outerView.clipsToBounds = false outerView.layer.shadowColor = UIColor.black.cgColor outerView.layer.shadowOpacity = 1 outerView.layer.shadowOffset = CGSize.zero outerView.layer.shadowRadius = 10 outerView.layer.shadowPath = UIBezierPath(roundedRect: outerView.bounds, cornerRadius: 10).cgPath 

接下来,将图像视图(或任何其他types的UIView )设置为与容器视图相同的大小,将clipsToBounds设置为true ,并为其指定一个cornerRadius

 let myImage = UIImageView(frame: outerView.bounds) myImage.clipsToBounds = true myImage.layer.cornerRadius = 10 

最后,请记住使图像查看容器视图的子视图。

 outerView.addSubview(myImage) 

结果应该是这样的:

在这里输入图像说明