Nic*_*chi 8 share-extension ios11 safearealayoutguide iphone-x
我正在调整一个应用程序来支持iPhone X.我有一个自定义视图控制器的共享扩展.我需要知道我的设备的安全区域插入,但是通过调用提供的safeAreaInsets方法在共享扩展中不可用,因为在那里不可见.有没有办法知道我的共享扩展中的属性值?UIWindowUIApplication.shared.keyWindowUIApplication.sharedsafeAreaInsets
safeAreaInsets是任何 UIView 上的属性;您可以在您的共享扩展中使用它。您不需要要求UIApplication.shared.keyWindowsafeAreaInsets - 事实上,您可能不想这样做,因为如果 keyWindow 包含 aUINavigationController或 a UITabBarController,则这些会影响 safeAreaInsets。
如果您在UIView层次结构中拥有一个视图,那么它safeAreaInsets的计算方法是查看层次结构中的祖先视图,并查看它们中是否有任何safeAreaInsets与您的视图重叠的视图。
但是,您可能会发现safeAreaInsets最初是UIEdgeInsets.zero- 您想要做的是实现UIView.safeAreaInsetsDidChange()or UIViewController.viewSafeAreaInsetsDidChange(),如下所示:
public override func safeAreaInsetsDidChange() {
if #available(iOS 11.0, *) {
super.safeAreaInsetsDidChange()
self.setNeedsUpdateConstraints() // or self.setNeedsLayout, etc.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |