2017-04-19 46 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