2016-09-23 28 views
2
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)它可以工作。但是,當我想以這種方式使其變得動態時,它似乎失敗了。圖像中消失時,造型類,使一個圓形圖像

我在這裏錯過了什麼?

回答

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 
} 
+0

完美,這終於使工作。由於xCode 8,Apple似乎對這些類型的東西更加嚴格。 – SoundShock

1

當此代碼運行時,視圖尚未調整大小,因此寬度不正確。嘗試把聽衆放在框架上:

override var frame : CGRect { 
    didSet { 
     layer.cornerRadius = frame.size.width/2 
    } 
} 
+0

您好,我把它添加到代碼,但我的ImageView的仍是空白 – SoundShock