带有表单的 SwiftUI 模态表:设备旋转后左/右填充错误
Posted
技术标签:
【中文标题】带有表单的 SwiftUI 模态表:设备旋转后左/右填充错误【英文标题】:SwiftUI modal sheet with Form: wrong left/right padding after device rotation 【发布时间】:2020-06-29 18:35:04 【问题描述】:当打开包含表单的模式表,然后将设备旋转到横向模式并返回纵向模式时,一切正常。但是,如果模态表在横向模式下打开然后旋转到纵向模式,则左侧和右侧的填充不符合预期。我认为这是 SwiftUI 中的一个错误。有解决办法吗?
struct ContentView: View
@State var modalDisplayed = false
var body: some View
Button(action: self.modalDisplayed = true )
Text("Show Modal")
.sheet(isPresented: $modalDisplayed)
Form
Section(header: Text("Section"))
Text("This is a test.")
它的外观:
如果模态表以横向打开然后旋转为纵向时的外观:
【问题讨论】:
适用于 Xcode 12 / ios 14 问题是应用应该在iOS 13上运行...有没有办法手动设置边框? 也适用于 Xcode 11.4 / iOS 13.4。这真的是那个代码吗? Xcode 11.5 / iOS 13.5 对我来说无法正常工作。 所以这是 Xcode 11.5 / iOS 13.5 中的错误?我目前无法访问 Xcode 11.4 / iOS 13.4... 【参考方案1】:.edgesIgnoringSafeArea(.all)
为我解决了这个问题。 (使用 Xcode 11.5 / iOS 13.5)
struct ContentView: View
@State var modalDisplayed = false
var body: some View
Button(action: self.modalDisplayed = true )
Text("Show Modal")
.sheet(isPresented: self.$modalDisplayed)
Form
Section(header: Text("Section"))
Text("This is a test.")
.edgesIgnoringSafeArea(.all)
【讨论】:
坏消息:但是,使用 Xcode 12 / iOS 14,无论有无.edgesIgnoringSafeArea(.all)
- 在横向模式下都有填充。因此,这在某种程度上是不确定的?
另外,这对我不起作用。我运行了您的代码,但问题仍然存在
据我所知,它几乎适用于除 iPhone X/XS/11 Pro 以外的所有设备。很奇怪。
这怎么可能?我什至在两台 Mac 上都试过了……真的很奇怪。
我在 iOS 13.6 和 iOS 14 上对其进行了测试。对我来说,您的解决方案不适用于 iOS 13.6。但是,该错误不会在 iOS 14 上发生。我想我必须等待...:/以上是关于带有表单的 SwiftUI 模态表:设备旋转后左/右填充错误的主要内容,如果未能解决你的问题,请参考以下文章