如何在 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 上的 topLayoutGuidebottomLayoutGuide 属性可用于 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)