gpt4 book ai didi

ios - Swift 如何检查 API 是否不可用

转载 作者:行者123 更新时间:2023-12-01 19:37:09 25 4
gpt4 key购买 nike

我仅将圆角半径应用于 View 的左上角和右上角。在 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 并使用 else 部分在早期版本上应用逻辑

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
}
}

更新 Swift 5.6:使用#unavailable

override func draw(_ rect: CGRect) {
if #unavailable(iOS 11, *) {
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 - Swift 如何检查 API 是否不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49021311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com