web-dev-qa-db-ja.com

swift

角が丸い滑らかなUIButtonを作成するにはどうすればよいですか?標準のAppleの丸い角は、標準の丸い角よりはるかに優れています。スケッチでボタンをデザインする場合、Appleの丸い角(滑らか)から標準の丸い角に形状の角を切り替える「滑らかな角」を切り替えることができます。

ここに比較があります:

enter image description here

これをすばやく切り替えるにはどうすればよいですか?

showContentButton.layer.cornerRadius = 20は角を丸めますが、この丸みのある角が「滑らかな角」なのか「標準の丸い角」なのかはよくわかりません。これを切り替える方法がわかりません。何か案は?

13
WalterBeiter

その効果を得るには、UIBezierPathを使用できます

Smooth corners

Edit:UIViewでの使用

class MyView: UIView {

    let myButton UIButton = UIButton()

    override func layoutSubviews() {
        super.layoutSubviews()

        // your roundPath code here
    }

}

編集2:

このアプローチを使用して、特定のコーナーを丸めます。

let roundPath = UIBezierPath(
    roundedRect: bounds,
    byRoundingCorners: [.topLeft, .topRight],
    cornerRadii: CGSize(width: 10, height: 10)
)

ソース

17
inokey

この拡張機能を使用するだけです

extension CALayer {

   func roundCorners(radius: CGFloat) {
       let roundPath = UIBezierPath(
           roundedRect: self.bounds,
           cornerRadius: radius)
       let maskLayer = CAShapeLayer()
       maskLayer.path = roundPath.cgPath
       self.mask = maskLayer
   }

}

このように使用します

cell.layer.roundCorners(radius: 18)
0
enigrify