ビューの左上と右上にのみコーナー半径を適用しています。 viewDidLoad()
には次のものがあります。
_if #available(iOS 11.0, *) {
view.layer.cornerRadius = 20.0
view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
}
_
IOS 11が利用できない場合、最善の方法はdraw(_ rect:)
でそれを行うようです。 viewDidLoad()
の外でオーバーライドする必要があるので、次のことを行います
_if NOT #available(iOS 11.0, *) {
override func draw(_ rect: CGRect) {
let maskPath = UIBezierPath(roundedRect: self.contentView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 20.0, height: 20.0))
let shapeLayer = CAShapeLayer()
shapeLayer.frame = self.bounds
shapeLayer.path = maskPath.cgPath
view.layer.mask = shapeLayer
}
}
_
もちろん、構文的には正しくありません。私は何をすべきか?
iOS 11より前のバージョンをサポートする必要がある場合は、関数draw(rect:)
内で#available
を使用し、elsepartを使用して以前のバージョンにロジックを適用します
override func draw(_ rect: CGRect) {
if #available(iOS 11, *) {} else {
let maskPath = UIBezierPath(roundedRect: self.contentView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 20.0, height: 20.0))
let shapeLayer = CAShapeLayer()
shapeLayer.frame = self.bounds
shapeLayer.path = maskPath.cgPath
view.layer.mask = shapeLayer
}
}