2017-04-19 13 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 :)あなたのコードは大丈夫ですが、ちょうど1回微調整すれば、スーパーがコーナー半径を設定する必要はありません。 – ankit

関連する問題