2017-04-19 53 views
4

我想讓我的自定義輪UIImageView並顯示在故事板。如何製作自定義四捨五入的UIImageView子類?

我做下一個:

@IBDesignable 
class RoundedImageView: UIImageView { 
    override init(image: UIImage?) { 
     super.init(image: image) 
     super.layer.cornerRadius = super.frame.size.height/2 
     self.layer.cornerRadius = self.frame.size.height/2  
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     super.layer.cornerRadius = super.frame.size.height/2 
     self.layer.cornerRadius = self.frame.size.height/2 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     super.layer.cornerRadius = super.frame.size.height/2 
     self.layer.cornerRadius = self.frame.size.height/2 
    } 
} 

和我的故事板的ImageView是RoundedImageView類選擇。 但是在故事板中它仍然顯示爲矩形。我怎麼能意識到它? 當我正在運行代碼其四捨五入。 感謝

+0

你說的是,當應用程序運行時,它是圓形的,但在IB上顯示的是矩形。 – ankit

+0

@ankit是的,多數民衆贊成 –

回答

5

layouts已被應用後,您應該設置半徑。

@IBDesignable 
class RoundedImageView: UIImageView { 
    override init(image: UIImage?) { 
     super.init(image: image) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override func layoutSubviews() { 
     self.layer.cornerRadius = self.frame.size.height/2 
     self.clipsToBounds = true 
    } 
} 
+0

感謝您的回答。我會在晚上嘗試它,並標記它,如果它有幫助:) –

+0

謝謝。而已。但一些代碼審查。確認它;) –

+0

wc :)。你的代碼很好,但只需調整一下,不需要超級來設置角落半徑。 – ankit