Детальное представление SwiftUI не отображается как желаемое в приложении iOS Master / Detail - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь создать приложение 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 для контактов

1 Ответ

0 голосов
/ 01 мая 2020

Это поведение по умолчанию. iPhone Пейзаж == iPad Портрет. Если вы нажмете на видимую область DetailView, MasterView будет анимирован с помощью анимации.

...