当我试图以编程的方式布局视图时,我遇到了一个问题,我似乎找不到一种简洁的、非繁琐的方法来解决它。
我使用safeAreaInsets在我的视图中调整一些元素的大小。在我在iOS 11之前的设备上试用之前,这个功能运行得很好。显然,由于缺少safeAreaInsets,我的子视图的大小变得混乱,一切变得一团糟。在使用旧版本的iOS时,我应该回退到什么地方。
更具体地说,我可以在下面的扩展中实现什么才能像预期的那样工作?
extension UIView {
func compatibilityInsets() -> UIEdgeInsets {
if #available(iOS 11.0, *) {
return self.safeAreaInsets
} else {
//what goes here?
return self.olderVersionOfInsets
}
}
}下面是我如何使用这个扩展方法的一个示例:
var minimumHeaderHeight: CGFloat {
//allows the header height to be 70 below navigation bar
return 70 + view.compatibilityInsets().top
}发布于 2018-06-20 18:11:11
添加safeAreaInsets是为了帮助避免内容在iPhone X的“缺口”后面消失……它只支持iOS 11 IIRC。
因此,iOS 10及更低版本的替代方案是return .zero,因为不需要定义任何安全区域。
本例中的.zero被推断为UIEdgeInsets类型,因此等效于调用UIEdgeInsets.zero。
https://stackoverflow.com/questions/50945625
复制相似问题