次のコードはiPhoneで動作しますが、iPadでは円が均等に丸められません。SwiftでサークルUIViewを作成する方法
ビューを両方のデバイスの円のように見えるようにするにはどうすればよいですか。
let width:CGFloat = UIScreen.main.bounds.width*0.0533
label.layer.masksToBounds = true
label.layer.cornerRadius = width/2
次のコードはiPhoneで動作しますが、iPadでは円が均等に丸められません。SwiftでサークルUIViewを作成する方法
ビューを両方のデバイスの円のように見えるようにするにはどうすればよいですか。
let width:CGFloat = UIScreen.main.bounds.width*0.0533
label.layer.masksToBounds = true
label.layer.cornerRadius = width/2
完全な円を作るためには、高さを維持する必要がありますし、あなたのラベルの幅と同じ。 このコードを使用してください。
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
UIViewを円で表示するには、いくつか方法があります。
あなたは事前にごビューの高さ/幅がわからない場合。スーパービュークラスのlayoutSubviews()
関数をオーバーライドするか、ビューコントローラのfunc viewDidLayoutSubviews()
関数をオーバーライドし、そこで直接コーナー半径を設定します。
override func layoutSubviews() {
super.layoutSubviews()
label.layer.cornerRadius = label.frame.size.width/2
}
はtrueにUIViewの者層のmasksToBoundsプロパティを設定することを忘れないでください。
マスク層のためのベジエのパスを指定します。ビューのサイズが変更されるたびに、レイヤのフレームを更新する必要があります。
あなたが画像を扱っている場合は、あなたもUIImageViewでそれを表示する前に画像自体を丸め検討することができます - パフォーマンス賢明それは仕方速く、前のオプションよりも可能性があり。
高さが幅と同じではないと思われます。 –
もう1つの理由は、ボタンの幅が丸められた整数の代わりに小数であることです。 (例:33.33 px) –
'label.layer.cornerRadius = min(label.frame.size.width/2、label.frame.size.height/2)'、元のフレームがなくてもラウンドを滑らかにします四角。 – holex