【问题标题】:safeAreaInsets for UIToolbar without using Constraints不使用约束的 UIToolbar 的 safeAreaInsets
【发布时间】:2018-05-09 17:44:12
【问题描述】:

我有一个应用程序以编程方式完成所有 UI,而不使用自动布局或任何类型的约束。屏幕底部是一个 UIToolbar。我试图将其布置为与 iPhone X 屏幕的底部安全区域很好地配合,但由于 VC 的设计,我无法使用布局约束。

所以在我的 layoutSubviews 回调中,我正在这样做:

if (@available(iOS 11.0, *)) {
    toolbarHeight += UIApplication.sharedApplication.keyWindow.safeAreaInsets.bottom;
}

然后稍后直接用toolBarHeight设置UIToolbar的框架。

这样做的原因是工具栏现在是正确的高度,并在您旋转到横向时进行调整,但问题是工具栏的按钮不是顶部对齐,而是垂直居中。我不知道如何设置 contentInsets 或以某种方式在不使用约束的情况下顶部对齐 UIToolbar 按钮。

有什么想法吗?

【问题讨论】:

  • 遇到了同样的问题!你最后找到解决办法了吗?
  • 这对我有用:stackoverflow.com/a/46684504/431492。我不得不转换为使用约束(仍然以编程方式)仅用于工具栏。
  • @Clafou - 我还没有发布,但确实有一些工作。我所做的实际上是一个 hack。我创建了一个 UIView 子类,其中包含一个子视图——一个 UIToolbar。因此,我调整 UIView 的大小以适合底部的右侧区域,但工具栏的框架位于 UIView 本身的顶部,并使用 sizeToFit 来获取其高度。因此 UIView 会调整以填充整个空间,但 Toolbar 是正常高度,并且在该 UIView 内对齐。

标签: ios objective-c ios11 uitoolbar


【解决方案1】:

UIToolbar 会自动填充安全区域。保持工具栏高度不变(例如 49pts),并将其放置在工具栏底部位于底部安全区域指南的顶部。

self.toolbar.width = self.view.width
self.toolbar.height = 49.0
self.toolbar.bottom = self.view.height - self.view.safeAreaInsets.bottom

以上代码使用UIView+FrameAdjustments

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多