ios - 不使用约束的 UIToolbar 的 safeAreaInsets

标签 ios objective-c ios11 uitoolbar

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

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

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

然后直接用 toolBarHeight 设置 UIToolbar 的 frame。

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

有什么想法吗?

最佳答案

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

关于ios - 不使用约束的 UIToolbar 的 safeAreaInsets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494793/

相关文章:

objective-c - 在 Swift 代码中使用 Objective-C 编写的委托(delegate)方法

ios - 在 UISwipeActionsConfiguration iOS 11 中更改文本和图像的颜色 - Xamarin/Swift

ios - 自定义后退指示器图像和 iOS 11

ios - Xcode 9 : infinite calculation of auto-layout constraints leads to OOM 中的 UINavigationController 方法 setToolbarHidden 错误

ios - 每次应用程序启动时都会调用 WKWebView 请求 DeviceMotion 和 DeviceOrientation 的权限

ios - 在 Xcode Auto Layout 中水平对齐两个相邻的对象

iphone - 在 iOS 中更改句子部分文本的颜色

iphone - 用于音频和视频组合的 AVCaptureSession - 音频部分提供 EXC_BAD_ACCESS

iphone - 如何以编程方式使 iPhone 静音

ios - OAConsumer API 在接收数据时抛出错误