如何在 11 以下的 iOS 中指定与安全区域的偏移量?
How to specify offset from safe area in iOS below 11?
在iOS11我用
safeAreaInsets
像这样指定从安全区域到我的自定义视图的偏移量:
var frame: CGRect
if #available(iOS 11.0, *) {
frame = CGRect(x:0,
y: self.view.safeAreaInsets.top + 16,
width: 100,
height: 50)
} else {
//backward compatibility to previous versions?
}
let customView = CustomView(frame: frame)
self.view.addSubview(customView)
问题是 - 如何在 iOS 的早期版本中指定距安全区域的偏移量?提前致谢!
iOS11之前的iOS版本没有安全区插入。这些从引入 iPhone X(随 iOS 11 一起提供)开始。
不需要补偿旧版本 iOS 上的这些插图。
为了向后兼容,您的代码应该是这样的
var frame: CGRect
if #available(iOS 11.0, *) {
frame = CGRect(x:0,
y: self.view.safeAreaInsets.top + 16,
width: 100,
height: 50)
} else {
frame = CGRect(x:0,
y: topLayoutGuide.length + 16,
width: 100,
height: 50)
}
let customView = CustomView(frame: frame)
self.view.addSubview(自定义视图)
注:
如果您使用 iOS 11 的安全区域布局指南,UIViewController 上的 topLayoutGuide
和 bottomLayoutGuide
属性可用于 iOS 7 - 10。
let safeAreaTop: CGFloat
if #available(iOS 11.0, *) {
safeAreaTop = view.safeAreaInsets.top
} else {
safeAreaTop = topLayoutGuide.length
}
let frame = CGRect(x:0, y: safeAreaTop + 16, width: 100, height: 50)
在iOS11我用
safeAreaInsets
像这样指定从安全区域到我的自定义视图的偏移量:
var frame: CGRect
if #available(iOS 11.0, *) {
frame = CGRect(x:0,
y: self.view.safeAreaInsets.top + 16,
width: 100,
height: 50)
} else {
//backward compatibility to previous versions?
}
let customView = CustomView(frame: frame)
self.view.addSubview(customView)
问题是 - 如何在 iOS 的早期版本中指定距安全区域的偏移量?提前致谢!
iOS11之前的iOS版本没有安全区插入。这些从引入 iPhone X(随 iOS 11 一起提供)开始。
不需要补偿旧版本 iOS 上的这些插图。
为了向后兼容,您的代码应该是这样的
var frame: CGRect
if #available(iOS 11.0, *) {
frame = CGRect(x:0,
y: self.view.safeAreaInsets.top + 16,
width: 100,
height: 50)
} else {
frame = CGRect(x:0,
y: topLayoutGuide.length + 16,
width: 100,
height: 50)
}
let customView = CustomView(frame: frame)
self.view.addSubview(自定义视图)
注:
如果您使用 iOS 11 的安全区域布局指南,UIViewController 上的 topLayoutGuide
和 bottomLayoutGuide
属性可用于 iOS 7 - 10。
let safeAreaTop: CGFloat
if #available(iOS 11.0, *) {
safeAreaTop = view.safeAreaInsets.top
} else {
safeAreaTop = topLayoutGuide.length
}
let frame = CGRect(x:0, y: safeAreaTop + 16, width: 100, height: 50)