首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取safeAreaInsets in viewWillTransitionToSize (iPhone X)

如何获取safeAreaInsets in viewWillTransitionToSize (iPhone X)
EN

Stack Overflow用户
提问于 2017-10-03 06:06:27
回答 2查看 2.4K关注 0票数 14

我正在尝试更新iPhoneX的iPhoneX方法。但我无法获得safeAreaInsets值的目的地。请帮帮我!

代码语言:javascript
复制
override func viewWillTransition(to size: CGSize,
        with coordinator: UIViewControllerTransitionCoordinator) {

    super.viewWillTransition(to: size, with: coordinator)

    if #available(iOS 11.0, *) {
        if let window = UIApplication.shared.keyWindow { 
            let insets = window.safeAreaInsets
            contentFrame = CGRect(x:insets.left, y:insets.top,
                width:size.width - insets.left - insets.right,
                height:size.height - insets.top - insets.bottom)
        }
    } else {
        contentFrame = CGRect(x:0,y:0,width:size.width, height:size.height)
    }
    self.updateViews()
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-05 09:09:39

我在日本斯塔克沃夫找到了有效的解决方案。

它只是获得UIViewControllerTransitionCoordinator.animate(alongsideTransition:completion:)闭包中的嵌入,如下所示:

代码语言:javascript
复制
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)

    coordinator.animate(alongsideTransition: { (context) in
        ...

        let insets = ...safeAreaInsets

        ...
    }, completion: nil)
}
票数 29
EN

Stack Overflow用户

发布于 2019-02-08 00:42:54

我也有这个问题。在实验之后,我找到了一个很好的解决办法,而不用等待过渡完成。

  1. 有一个定位在安全区域的视图(让我们称之为SizeListenerView),这样我们只需要听这个视图的大小变化

SizeListenerView

代码语言:javascript
复制
    override var bounds: CGRect {
        didSet {
            // now you can access the bounds here
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46538117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档