首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >怎样才能找到安全区域的高度和宽度?

怎样才能找到安全区域的高度和宽度?
EN

Stack Overflow用户
提问于 2018-02-25 16:15:15
回答 4查看 27.1K关注 0票数 12

我正在尝试以编程方式为一些标签、按钮和文本字段设置与安全区域的高度和宽度相关的约束。例如,我希望将标签到安全区域顶部的距离设置为安全区域高度的10%。

如何检索安全区域的高度和宽度?

这是一种合理的方法吗?我的想法是,无论iOS设备是什么,我的屏幕都会自动调整。

谢谢你的帮助!

EN

回答 4

Stack Overflow用户

发布于 2019-01-20 17:53:22

你可以通过存储安全区域的帧来获得高度。safeAreaLayoutGuide有一个名为layoutFrame的属性。

代码语言:javascript
运行
复制
let frame = self.view.safeAreaLayoutGuide.layoutFrame
print(frame.height)
print(frame.width)

我做了一个UIView扩展,它创建了一个名为safeAreaFrameread-only property

如果iOS版本为11或更高版本的,则safeAreaFrame将是安全区的帧。

否则,它将是bounds (仅仅是视图的框架)。

代码语言:javascript
运行
复制
extension UIView {
    public var safeAreaFrame: CGRect {
        if #available(iOS 11, *) {
            return safeAreaLayoutGuide.layoutFrame
        }
        return bounds
    }
}

示例:

代码语言:javascript
运行
复制
let frame = self.view.safeAreaFrame 
print(frame.height)
print(frame.width)
票数 19
EN

Stack Overflow用户

发布于 2018-02-28 21:47:07

代码语言:javascript
运行
复制
if #available(iOS 11.0, *) {
        if let window = UIApplication.shared.keyWindow {
            let safeAreaBottom = window.safeAreaInsets.bottom
            let safeAreaLeft = window.safeAreaInsets.left
            let safeAreaRight = window.safeAreaInsets.right
            let safeAreaTop = window.safeAreaInsets.top
        }
}
票数 14
EN

Stack Overflow用户

发布于 2020-08-12 11:35:46

代码语言:javascript
运行
复制
override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    let safeAreaHeight = view.safeAreaLayoutGuide.layoutFrame.height
    let safeAraeWidth = view.safeAreaLayoutGuide.layoutFrame.width
}

请记住在viewDidLayoutSubviews函数中执行此操作,或者在任何函数中设置约束,然后在viewDidLayoutSubviews中调用该函数。

viewDidLoad不会给你提供安全区框,因为它在加载视图之前运行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48971598

复制
相关文章

相似问题

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