以下代码在 iOS 16.0 的 Xcode-14.0.0-Beta 5 上运行时打破了布局约束
struct ContentView: View {
@State var date = Date()
var body: some View {
DatePicker(selection: $date, displayedComponents: .date, label: { EmptyView() })
.datePickerStyle(.graphical)
}
}
有什么建议如何修复或隐藏警告吗?
控制台警告:
2022-08-24 17:16:40.471325+0300 DatePickerProblem[77364:483284] [LayoutConstraints] 无法同时满足约束。
可能至少以下列表中的约束之一是您不想要的。
尝试这个:
(1) 查看每个约束并尝试找出您不期望的约束;
(2) 找到添加了不需要的约束的代码并修复它。
(注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性的文档translatesAutoresizingMaskIntoConstraints)
(
“
新的底层
UICalendarView
在其 SwiftUI DatePicker
包装器使用时似乎存在一些自动布局问题。
当您也启用时间组件时,您可以更好地看到这一点 (
displayedComponents: [.date, .hourAndMinute]
)。这会给出更长的自动布局警告,提示时间标签约束被破坏。
对我来说,这种情况尤其发生在使用
UIHostingController
嵌入 SwiftUI 视图并推送到导航堆栈上时。
就我而言,我可以通过将 DatePicker 的默认宽度作为其框架宽度来修复它:
struct ContentView: View {
@State var date = Date()
var body: some View {
DatePicker(
selection: $date,
displayedComponents: [.date, .hourAndMinute],
label: { EmptyView() }
)
.datePickerStyle(.graphical)
.frame(width: 320) // Bugfix for AutoLayout-Issue
}
}
struct ContentView: View {
@State var date = Date()
var body: some View {
DatePicker(selection: $date, displayedComponents: .date, label: { EmptyView() })
.datePickerStyle(.graphical)
.padding()
}
.padding()
停止对我发出警告。