我正在尝试创建一个具有圆角和阴影的ImageView
,以赋予其一定的深度。我能够为 UIImageView
创建阴影,但每当我添加代码以使其具有圆角时,它只有圆角而没有阴影。我有一个名为 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
,这将圆角但防止出现阴影。为了解决这个问题,您可以创建两个 View 。容器 View 应该有阴影,其 subview 应该有圆角。
容器 View 将 clipsToBounds
设置为 false
,并应用了阴影属性。如果您还希望阴影呈圆形,请使用接受 roundedRect
和 cornerRadius
的 UIBezierPath
构造函数。
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
接下来,将 ImageView (或任何其他类型的UIView
)设置为与容器 View 相同的大小,将clipsToBounds
设置为true
,并给它一个 cornerRadius
。
let myImage = UIImageView(frame: outerView.bounds)
myImage.clipsToBounds = true
myImage.layer.cornerRadius = 10
最后,记住使 ImageView 成为容器 View 的 subview 。
outerView.addSubview(myImage)
结果应该是这样的:
关于ios - 为具有圆角的 UIImageView 创建阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559362/