ios - 旋转模拟时,内容不会调整大小。Xcode 11
问题描述
当我在 Xcode 11 中运行我的应用程序模拟时,它运行良好(纵向或横向)。但是当我旋转时,它不会调整到我为该方向设置的适当约束。
如果我停止应用程序在后台运行并路由模拟然后打开它,那么它工作正常。
如何在设备旋转时调整内容的大小?
解决方案
您将不得不使用约束或自动布局来固定子视图(文本、图像、旋转到父视图后未正确显示的子视图(例如UIView
您的主视图)。UIViewController
有很多地方可以这样做。这些是一些例子:
在Interface Builder中:您需要使用
如何添加
如何检查
在代码中:您可以使用
- 将您的视图固定到超级视图的约束。
titleLabel.translatesAutoresizingMaskIntoConstraints = false titleLabel.leadingAnchor.constraint(equalTo: closeButton.trailingAnchor, constant: 30).isActive = true titleLabel.topAnchor.constraint(equalTo: closeButton.topAnchor).isActive = true titleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -15).isActive = true titleLabel.heightAnchor.constraint(equalToConstant: 50).isActive = true
- 使用框架和尺寸:
titleLabel.frame = mySuperView.frame
对于代码布局/约束,如果您要锚定视图,我发现最好在将子视图添加到父视图时添加它(在
viewDidLoad
或init...
),但如果您正在使用尺寸(widthAnchor
和heightAnchor
),或者如果您是使用框架和大小,布局更新方法(layoutSubviews
,didLayoutSubviews
,transition...
, ...)是最好的地方,因为它们会在旋转变化时更新。
注意:我使用 xcode 11.7 制作屏幕截图,xcode 12 更改了一些图标,因此它们看起来会略有不同。但是,功能是相同的。
推荐阅读
- reactjs - 在滚动视图中渲染反应导航屏幕
- docker - 尝试使用 docker:dind 时 gitlab-ci 失败
- r - Dbplyr:in_schema 为两个不同的数据库使用相同的连接
- c# - 在 API 基本路径 .net 核心中包含占位符
- docker - 如何使用 vue 中构建的系统环境变量?
- php - 我是 php 新手。我收到此错误,不知道如何纠正。谁能帮我这个?
- objective-c - 是否可以通过 [NSString drawAtPoint] 绘制文本或在 Metal 视图中显示 NSButton?
- mysql - Owncloud seems to ignore dbtype in config.php (using docker)
- c - Merge/Inline Structs
- visual-studio-code - Intellisense not picking up Redux store type