2015-12-28 14 views
5

私のimageViewを円にしようとしていますが、ダイヤモンドとして出てきています。私はこのコードが動作するだろうと思ったが、そうではありません。円形のImageViewがダイヤモンドとして出てくる

profilePic.layer.cornerRadius = profilePic.frame.width/2 
    profilePic.clipsToBounds = true 
+1

画像ビューの高さと幅は同じにする必要があります。円のように見えるでしょう –

+0

彼らは同じですが、私はストーリーボードで1:1のアスペクト比を持っています。 – cb428

+0

使用profilePic.layer.masksToBounds = YES; –

答えて

1

は、手動でそれがdestinationViewControllerに以下のコード追加してinit(coder aDecoder: NSCoder!)を実装

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    profilePic.layer.cornerRadius = profilePic.frame.width/2 
    profilePic.clipsToBounds = true 
} 
+2

スタックのオーバーフローはあなたの答えをまだ受け入れるようにしていませんが、これは働いた - ありがとう! – cb428

+1

私も前と同じ問題です。私はviewdidloadでautolayoutとして適切に設定されていないと思う。誰かが反対票でそれをマークしているため、あなたは受け入れることができません。 – jay

+1

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

0

にあなたのコードを試してみてください。

は、あなたがあなたの欲求の結果を取得します

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 
0

これは動作します。実際にはビューのライフサイクルごとに、メソッドはinit,loadView,viewDidLoadviewWillAppearviewWillLayoutSubViewsの順で実行され、その後、自動レイアウト制約が適用されます(このレイアウトメソッドが呼び出されるまでの時間)viewDidLayoutSubviewsようやくviewDidAppear。あなたの質問から

、それは自動レイアウトの制約が適用されます前に、あなたが方法のいずれかであなたのコードを入れていることになります。そのため、あなたは適切な視野幅を得ておらず、円の代わりにダイヤモンドに変わります。

0

viewDidLayoutSubviews法やviewDidAppear方法で同じコードを使用する

1

デバイスごとに完全な円が表示されない場合があります。2.0を異なるサイズのデバイスの値の近くで異なる値に変更してみてください。

-(void)viewDidLoad { 
    self.profilePic.layer.cornerRadius = self.profilePic.frame.size.width/2.0f; 
    self.profilePic.clipsToBounds = YES; 
} 
+0

おかげでルーカスを経由して行こうと...実際に内部に起こっている、実際に何かを理解し、正しい道を経由して行く代わりに、このパッチを使用しています。私はあなたの助けに感謝します。 –