2017-11-07 8 views
2

次のコードはiPhoneで動作しますが、iPadでは円が均等に丸められません。SwiftでサークルUIViewを作成する方法

ビューを両方のデバイスの円のように見えるようにするにはどうすればよいですか。

let width:CGFloat = UIScreen.main.bounds.width*0.0533  
label.layer.masksToBounds = true 
label.layer.cornerRadius = width/2 

enter image description here

+1

高さが幅と同じではないと思われます。 –

+0

もう1つの理由は、ボタンの幅が丸められた整数の代わりに小数であることです。 (例:33.33 px) –

+0

'label.layer.cornerRadius = min(label.frame.size.width/2、label.frame.size.height/2)'、元のフレームがなくてもラウンドを滑らかにします四角。 – holex

答えて

5

完全な円を作るためには、高さを維持する必要がありますし、あなたのラベルの幅と同じ。 このコードを使用してください。

let width:CGFloat = UIScreen.main.bounds.width*0.0533 
label.frame = CGRect(0,0,width,width)  
label.layer.masksToBounds = true 
label.layer.cornerRadius = width/2 
2

UIViewを円で表示するには、いくつか方法があります。

  • を設定し、それは、幅/高さの半分(最も一般的な方法)へコーナー半径

あなたは事前にごビューの高さ/幅がわからない場合。スーパービュークラスのlayoutSubviews()関数をオーバーライドするか、ビューコントローラのfunc viewDidLayoutSubviews()関数をオーバーライドし、そこで直接コーナー半径を設定します。

override func layoutSubviews() { 
    super.layoutSubviews() 
    label.layer.cornerRadius = label.frame.size.width/2 
} 

はtrueにUIViewの者層のmasksToBoundsプロパティを設定することを忘れないでください。

  • セットマスク層

マスク層のためのベジエのパスを指定します。ビューのサイズが変更されるたびに、レイヤのフレームを更新する必要があります。

  • 丸め画像

あなたが画像を扱っている場合は、あなたもUIImageViewでそれを表示する前に画像自体を丸め検討することができます - パフォーマンス賢明それは仕方速く、前のオプションよりも可能性があり。

関連する問題