样式类制作圆形图像时图像消失

时间:2016-09-23 14:22:07

标签: swift uiimageview uiimage

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),它可以工作。但是当我想以这种方式使它变得动态时,它似乎失败了。

我在这里缺少什么?

2 个答案:

答案 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
 }