美文网首页
iOS11 SafeArea 对应swift 片段

iOS11 SafeArea 对应swift 片段

作者: 小杨哥 | 来源:发表于2018-05-05 17:37 被阅读455次

    在开发过程中遇到tableView内容下移20pt或下移64pt的问题,对当tableView超出安全区域时系统自动调整了SafeAreaInsets值,进而影响adjustedContentInset值,在iOS 11中决定tableView的内容与边缘距离的是adjustedContentInset属性,而不是contentInset
    adjustedContentInset = safeAreaInset + contentInset

    在 UIViewContoller 实现 viewSafeAreaInsetsDidChange 方法

    
        override func viewSafeAreaInsetsDidChange() {
            if #available(iOS 11.0, *) {
                super.viewSafeAreaInsetsDidChange()
                NSLog("viewSafeAreaInsetsDidChange-%@",NSStringFromUIEdgeInsets(self.view.safeAreaInsets))
            } else {
                // Fallback on earlier versions
            }
            self.updateOrientation()
        }
    
    

    对应的 updateOrientation() 方法内容为

        /**
         更新屏幕safearea frame
         */
        func updateOrientation()
        {
            if #available(iOS 11.0, *) {
                var frame = self.customView.frame
                frame.origin.x = self.view.safeAreaInsets.left
                frame.size.width  = self.view.frame.size.width - self.view.safeAreaInsets.left - self.view.safeAreaInsets.right
                frame.size.height = self.view.frame.size.height - self.view.safeAreaInsets.bottom
                self.customView.frame = frame
            }
    
        }
    

    相关文章

      网友评论

          本文标题:iOS11 SafeArea 对应swift 片段

          本文链接:https://www.haomeiwen.com/subject/llderftx.html