【发布时间】:2017-10-27 08:58:04
【问题描述】:
我想创建一个信息视图,它会显示在屏幕顶部并在一段时间后消失,然后它可以再次显示等等。
我已经创建了 UIView 并设置了约束:
topInfoView.leadingAnchor.constraint(equalTo: mainView.leadingAnchor)
topInfoView.trailingAnchor.constraint(equalTo: smainView.trailingAnchor)
topInfoView.heightAnchor.constraint(equalToConstant: HEIGHT)
关闭状态: topInfoView.topAnchor.constraint(equalTo: mainView.topAnchor, 常量: -HEIGHT)
打开状态: topInfoView.topAnchor.constraint(equalTo: mainView.topAnchor, constant: 0)
其中mainView 是主要的UIViewCcontroller 视图。
我将HEIGHT 设置为我的用户高度+“状态栏高度”(带电池、Wifi 等的栏)。问题是,有时状态栏高度为 0,而我的 topInfoView 放置不正确。我通过这个获得“状态栏高度”:
func statusBarHeight() -> CGFloat {
let statusBarSize = UIApplication.shared.statusBarFrame.size
return Swift.min(statusBarSize.width, statusBarSize.height)
}
但它有时不起作用(视图未启动?)而且我也不确定新 iPhone X,其中状态栏的解决方式不同。有没有其他方法,不计算高度?
【问题讨论】:
-
如果你想在
viewDidLoad获取视图高度,那可能是错误的,因为布局还没有完成,在viewDidLayoutSubview获取它 -
@Tj3n 这就是为什么我要寻找不同的解决方案,而不是直接“基于”状态栏高度。