我想使用尺寸类别创建不同的布局,我按照以下示例操作:https ://www.hackingwithswift.com/quick-start/swiftui/how-to-create- different-layouts-using-size-classes
我扩展了 Xcode Master/Detail 模板并更改了 ContentView,如下所示,使用两个尺寸类,然后使用水平尺寸类来设置依赖于尺寸类的导航标题。问题是导航标题总是显示为“Compact”。我在这里缺少什么?
struct ContentView: View {
@Environment(\.managedObjectContext)
var viewContext
@Environment(\.verticalSizeClass) var vSizeClass
@Environment(\.horizontalSizeClass) var hSizeClass
var body: some View {
NavigationView {
MasterView()
.navigationBarTitle(Text(hSizeClass == .compact ? "Compact" : "Regular"))
.navigationBarItems(
leading: EditButton(),
trailing: Button(
action: {
withAnimation { Event.create(in: self.viewContext) }
}
) {
Image(systemName: "plus")
}
)
Text("Detail view content goes here")
.navigationBarTitle(Text("Detail"))
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
Run Code Online (Sandbox Code Playgroud)
我使用此代码进行了自己的测试,经过简化,并对您的代码进行了稍微修改:
struct ContentView: View {
@Environment(\.managedObjectContext)
var viewContext
@Environment(\.verticalSizeClass) var vSizeClass
@Environment(\.horizontalSizeClass) var hSizeClass
var body: some View {
NavigationView {
Form {
Section {
Text("My Content")
}
}
.navigationBarTitle(Text(hSizeClass == .compact ? "Compact" : "Regular"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
测试它会在模拟器中产生所需的结果:
iPhone 8 Plus: 纵向模式下紧凑宽度, 横向模式下常规宽度
最初,导航标题显示“紧凑”,但当手机旋转至横向时,标题会更新,显示“常规”。
只需确保您使用的设备或模拟器进行测试,其水平尺寸等级在某些方向上是规则的。
正如OP评论中提到的,这是关于这个主题的官方文档。它有一个方便的表格,根据型号和物理方向列出了设备尺寸类别:
祝你好运!
归档时间: |
|
查看次数: |
1649 次 |
最近记录: |