swiftで角丸のViewを作るには、layerのcornerRadius
を設定すれば簡単にできますが、これだと4隅すべてが角丸になってしまいます。
上だけを角丸にしたい時などには、一部だけ角丸のパスをUIBezierPath
で作成し、CAShapeLayer
に設定します。
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .grayColor() // 上だけ角丸にするViewを用意 let view1 = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) view1.backgroundColor = .greenColor() view.addSubview(view1) view1.center = view.center // TopLeft, TopRightを5px丸めたパスを生成 let maskPath = UIBezierPath(roundedRect: view1.frame, byRoundingCorners: [.TopLeft, .TopRight], cornerRadii: CGSize(width: 5, height: 5)) // CAShapeLayerを生成し、先ほど生成したパスをセットする let maskLayer = CAShapeLayer() maskLayer.path = maskPath.CGPath // 対象のViewのlayer.maskにCAShapeLayerをセットする view1.layer.mask = maskLayer } }