class RoundImage: UIImageView {
override func awakeFromNib() {
super.awakeFromNib()
setupView()
}
...
func setupView() {
self.layer.borderWidth = borderWidth
self.layer.borderColor = borderColor
self.clipsToBounds = clip
self.layer.cornerRadius = self.frame.size.width / 2
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupView()
}
}
我正在使用以下类来设置我的UIImageViews样式。我想让它们循环。当我添加以下代码行self.layer.cornerRadius = self.frame.size.width / 2
以使其成为可能时,我的整个图像都会消失。
当我使用像50这样的硬编码值时(因为我的图像宽度为100),它可以工作。但是当我想以这种方式使它变得动态时,它似乎失败了。
我在这里缺少什么?
答案 0 :(得分:1)
运行此代码时,视图尚未调整大小,因此宽度不正确。尝试在框架上放置一个监听器:
override var frame : CGRect {
didSet {
layer.cornerRadius = frame.size.width / 2
}
}
答案 1 :(得分:1)
几天前我遇到了这个问题。
您应该在修改图层之前添加layoutIfNeeded()
。
在你的情况下:
func setupView() {
self.layoutIfNeeded()
self.layer.borderWidth = borderWidth
self.layer.borderColor = borderColor
self.clipsToBounds = clip
self.layer.cornerRadius = self.frame.size.width / 2
}