Edited at

UIBezierPathで角丸にする

More than 3 years have passed since last update.

角丸をまとめてみた。


UIBezierPathのclipを使って角丸にする

UIViewを継承したClipRoundedCornersViewというのを作ってイメージを描画しました。

import UIKit

class RoundedCornersView: UIView {

override func drawRect(rect: CGRect) {
UIBezierPath(roundedRect: self.bounds, cornerRadius: CGRectGetHeight(self.bounds) / 2).addClip()
UIImage(named: "rocket")?.drawInRect(self.bounds)
}
}


UIBezierPathとUIViewのlayerを使って角丸にする

こちらもUIViewをサブクラス化して作りました。

import UIKit

class LayerRoundedCornersView: UIView {

override func drawRect(rect: CGRect) {
UIImage(named: "rocket")?.drawInRect(self.bounds)

let maskPath = UIBezierPath(roundedRect: self.bounds, cornerRadius: CGRectGetWidth(self.bounds) / 2)
let maskLayer = CAShapeLayer()
maskLayer.path = maskPath.CGPath
self.layer.mask = maskLayer;
}
}


UIStoryboard

今回は、UIStoryboardに置いたUIViewのクラスを指定することで画面上に表現しました。

storyboard.png


実行結果

app2.png


サンプルコード


参考