我正在尝试创建一个ImageView
它有圆角和阴影以赋予它一些深度。我能够为UIImageView
,但是每当我添加代码以使其具有圆角时,它只有圆角而没有阴影。我有一个IBOutlet
named myImage
,并且它位于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
to true
,这将使拐角变圆,但可以防止出现阴影。为了解决这个问题,您可以创建两个视图。容器视图应该有阴影,其子视图应该有圆角。
容器视图有clipsToBounds
set to false
,并应用了阴影属性。如果您也希望阴影变圆,请使用UIBezierPath
构造函数接受一个roundedRect
and 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
接下来,设置图像视图(或任何其他类型的UIView
) 与容器视图大小相同,设置clipsToBounds
to true
,并给它一个cornerRadius
.
let myImage = UIImageView(frame: outerView.bounds)
myImage.clipsToBounds = true
myImage.layer.cornerRadius = 10
最后,记住使图像视图成为容器视图的子视图。
outerView.addSubview(myImage)
结果应该是这样的:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)