iOS - 屏幕顶部隐藏的UIView

时间:2017-10-27 08:58:05

标签: ios iphone swift

我想创建一个信息视图,它将显示在屏幕顶部并在一段时间后消失,之后它可以再次显示,等等。

我创建了UIView并设置了约束:

topInfoView.leadingAnchor.constraint(equalTo: mainView.leadingAnchor)
topInfoView.trailingAnchor.constraint(equalTo: smainView.trailingAnchor)
topInfoView.heightAnchor.constraint(equalToConstant: HEIGHT)

封闭状态:     topInfoView.topAnchor.constraint(equalTo:mainView.topAnchor,constant:-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,状态栏的解决方式不同。有没有其他方法,没有计算高度?

1 个答案:

答案 0 :(得分:1)

使用垂直堆栈视图。将tableView和您的视图一个接一个地垂直放置。设置表格视图的高度。将堆栈视图的分布属性保持为填充。创建tableview的出口。通过这种安排,当您隐藏桌面视图时,您的视图将填满整个区域。当您再次将 isHidden属性设置为表格视图的false 时,您的表格视图和视图将显示为原始排列。您可以在隐藏和显示表视图时进行动画处理,以提供良好的用户体验。