在 SwiftUI 中更改方向时更新 UI
Posted
技术标签:
【中文标题】在 SwiftUI 中更改方向时更新 UI【英文标题】:Update UI when orientation is changing in SwiftUI 【发布时间】:2021-01-05 20:09:55 【问题描述】:我已经开始学习 SwiftUI。当方向改变时,我尝试更新 UI。
我在视图中添加了@Environment(\.horizontalSizeClass) var sizeClass
,然后iphone模拟器在旋转时会自动更新UI。但 iPad 模拟器在旋转时不会更新 UI。你能告诉我如何更新 iPad 的 UI 吗?
【问题讨论】:
不确定是否可行,另请参阅here 这能回答你的问题吗? SwiftUI - Determining Current Device and Orientation 【参考方案1】:如果您查看人机界面指南中的设备尺寸类别,您会注意到 iPad 在横向和纵向模式下都具有“常规”宽度和高度。
所以当你使用 .horizontalSizeClass 时,它同时适用于 iPhone 和 iPad,只是 iPad 在旋转时不会改变 sizeClass。
https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/
如果您使用 GeometryReader 设置帧大小,它们将在设备旋转时自动更新。 在视图上设置 .frame(maxWidth:) 也非常有用,这样如果 iPad 是横向的,视图的内容就会受到限制。 715 附近的某个地方运行良好。【讨论】:
在这里使用尺寸等级将无济于事。最好使用UIDevice.orientationDidChangeNotification
,如***.com/a/65586833/8697793以上是关于在 SwiftUI 中更改方向时更新 UI的主要内容,如果未能解决你的问题,请参考以下文章