【问题标题】:iOS - hideable UIView at the top of the screeniOS - 屏幕顶部的可隐藏 UIView
【发布时间】: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 这就是为什么我要寻找不同的解决方案,而不是直接“基于”状态栏高度。

标签: ios iphone swift


【解决方案1】:

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

【讨论】:

  • 能否请您发布一些示例代码?我不太关注 tableView。
  • 抱歉有任何看法。我认为它的表格视图。只需等待 5 分钟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多