swift-状态栏旋转后未调整大小

问题描述 投票:0回答:1

我在笔尖的标头中有一个图像,一个导航栏和一个状态栏。旋转到横向后,图像和导航栏的大小可以很好地调整,但是状态栏保持纵向的原始帧大小。

在笔尖中,我有:

statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)

如果我以横向方式启动设备,则所有尺寸均正确。问题实际上只是当我从肖像转到风景时。

方向更改时如何调整statusBar的大小?

ios swift xcode ipad nib
1个回答
0
投票

理想情况下,您应该在此处使用自动布局,以根据设备的尺寸确定宽度。为此,您需要像这样初始化视图:

let statusBarView = UIView(frame: .zero)
statusBarView.translatesAutoresizingMaskIntoConstraints = false

要在translatesAutoresizingMaskIntoConstraints上提供更多信息,文档会说:

如果要使用自动版式动态计算尺寸和视图的位置,必须将此属性设置为false,然后为以下问题提供一个无歧义,无冲突的约束集查看。

一旦这样做,您需要将约束设置为超级视图的边缘,因此从编程上来说,这将类似于:

// Pin the leading edge of statusBarView to the view's leading edge
statusBarView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true

// Pin the trailing edge of statusBarView to the view's trailing edge
statusBarView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

如果您不想使用自动布局(强烈建议您do使用自动布局),则您需要监听方向变化,然后每次都更新statusBarView的帧。要收听的通知是viewWillTransition(to:with:)https://developer.apple.com/documentation/uikit/uicontentcontainer/1621466-viewwilltransition

© www.soinside.com 2019 - 2024. All rights reserved.