Я пытаюсь создать приложение Master / Detail, которое работает на iOS и iPadOS. Когда я поворачиваю приложение в альбомную ориентацию, оно работает, как и ожидалось, на iPadOS; однако в iOS главный вид накладывается на подробный вид, а не сжимает подробный размер для соответствия разделенному экрану. Возможно, мне не хватает модификатора в одном из представлений, но я не могу найти решение. Любая помощь будет принята с благодарностью.
Вот код:
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
NavigationView {
MasterView().navigationBarTitle("Star Wars Characters")
DetailView()
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
}
struct MasterView: View {
@ObservedObject var dataStore = DataStore()
var body: some View {
List {
ForEach(sortedPeople) { person in
NavigationLink(destination: DetailView(person: person)) {
PersonView(person: person)
}
}
}
}
var sortedPeople: [Person] {
return dataStore.people.sorted {$0.firstName < $1.firstName}
}
}
struct PersonView: View {
var person: Person
var body: some View {
VStack(alignment: .leading){
Text("\(person.lastName)").font(.headline).fontWeight(.ultraLight)
Text("\(person.firstName)").font(.subheadline).fontWeight(.light)
}
.padding(.leading)
}
}
struct DetailView: View {
var person = Person()
var body: some View {
VStack(alignment: .leading, spacing: 5) {
Text(displayText()).font(.title)
}.padding()
.navigationBarTitle("??")
}
func displayText() -> String {
return person.firstName != "" ? "Hello \(person.name)" : "Click on someone to say hi"
}
}
Вот вывод:
iPadOS
iOS
Как уже отмечалось, я понимаю, что это поведение по умолчанию . Однако, если вы посмотрите на приложение Apple для контактов, вы увидите, что вы можете достичь желаемого поведения .
Приложение Apple для контактов