私のimageViewを円にしようとしていますが、ダイヤモンドとして出てきています。私はこのコードが動作するだろうと思ったが、そうではありません。円形のImageViewがダイヤモンドとして出てくる
profilePic.layer.cornerRadius = profilePic.frame.width/2
profilePic.clipsToBounds = true
私のimageViewを円にしようとしていますが、ダイヤモンドとして出てきています。私はこのコードが動作するだろうと思ったが、そうではありません。円形のImageViewがダイヤモンドとして出てくる
profilePic.layer.cornerRadius = profilePic.frame.width/2
profilePic.clipsToBounds = true
は、手動でそれがdestinationViewController
に以下のコード追加してinit(coder aDecoder: NSCoder!)
を実装
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
profilePic.layer.cornerRadius = profilePic.frame.width/2
profilePic.clipsToBounds = true
}
スタックのオーバーフローはあなたの答えをまだ受け入れるようにしていませんが、これは働いた - ありがとう! – cb428
私も前と同じ問題です。私はviewdidloadでautolayoutとして適切に設定されていないと思う。誰かが反対票でそれをマークしているため、あなたは受け入れることができません。 – jay
viewWillLayoutSubviewsは{遅延時間= dispatch_time(DISPATCH_TIME_NOW、 Int64型(0.1 *ダブル(NSEC_PER_SEC))) dispatch_after(遅延時間、dispatch_get_main_queue()){ profilePic.layerを聞かせても、あなたは次のような方法でのviewDidLoad置くことができることを避けるために、複数の時間を呼び出します.cornerRadius = profilePic.frame.width/2 profilePic.clipsToBounds =真 }} – jay
にあなたのコードを試してみてください。
は、あなたがあなたの欲求の結果を取得します
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
profiePic = [[UIImageView alloc]init];
profilePic setFrame : CGRectMake ("Set Your Control's Frame here");
profilePic.layer.cornerRadius = profilePic.frame.width/2
profilePic.clipsToBounds = true
}
下のようにしImageView
を初期化します。私は
profilePicImageView.layer.cornerRadius = profilePicImageView.frame.size.height/2
profilePicImageView.layer.masksToBounds = false
profilePicImageView.clipsToBounds = true
profilePicImageView.layer.borderWidth = 0
これは動作します。実際にはビューのライフサイクルごとに、メソッドはinit
,loadView
,viewDidLoad
、viewWillAppear
、viewWillLayoutSubViews
の順で実行され、その後、自動レイアウト制約が適用されます(このレイアウトメソッドが呼び出されるまでの時間)viewDidLayoutSubviews
ようやくviewDidAppear
。あなたの質問から
、それは自動レイアウトの制約が適用されます前に、あなたが方法のいずれかであなたのコードを入れていることになります。そのため、あなたは適切な視野幅を得ておらず、円の代わりにダイヤモンドに変わります。
viewDidLayoutSubviews
法やviewDidAppear
方法で同じコードを使用する
デバイスごとに完全な円が表示されない場合があります。2.0
を異なるサイズのデバイスの値の近くで異なる値に変更してみてください。
-(void)viewDidLoad {
self.profilePic.layer.cornerRadius = self.profilePic.frame.size.width/2.0f;
self.profilePic.clipsToBounds = YES;
}
おかげでルーカスを経由して行こうと...実際に内部に起こっている、実際に何かを理解し、正しい道を経由して行く代わりに、このパッチを使用しています。私はあなたの助けに感謝します。 –
画像ビューの高さと幅は同じにする必要があります。円のように見えるでしょう –
彼らは同じですが、私はストーリーボードで1:1のアスペクト比を持っています。 – cb428
使用profilePic.layer.masksToBounds = YES; –