为具有圆angular的UIImageView创build阴影?
我正在尝试创build一个具有圆angular和阴影的ImageView
,以提供一些深度。 我能够为UIImageView
创build一个阴影,但每当我添加代码也使其具有圆angular时,它只有圆angular而没有阴影。 我有一个名为myImage
的IBOutlet
,它位于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
构造函数,它包含一个roundedRect
和cornerRadius
。
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)
结果应该是这样的: