Проблемы с фреймом SwiftUI List NavigationLink (высота: CGFloat) - PullRequest
2 голосов
/ 08 июля 2019

Я пытаюсь отобразить пользовательское представление для моей строки списка, это HStack с изображением, текстом заголовка и другим текстом, содержащим короткий абзац.У меня проблемы с высотой элемента NavigationLink.Я попытался установить рамку на определенную высоту, но она не отображается оптимально на разных устройствах (небольшая разница в разрешении между iPhone XR и iPhone XS достаточно, чтобы мне пришлось регулировать высоту вручную).

Можно ли настроить высоту кадра автоматически?Я пробовал много вещей, таких как установка высоты кадра в моем PlanetRow View, добавление отступов, установка lineLimit на: 0, 3, 5, ... Что бы я ни делал, если я не установил высоту для NavigationLink View,PlanetRow простирается за представление NavigationLink (видимое за пределами разделителей списка).

Вот код для моих просмотров:

struct PlanetRow : View {
    var planet: Planet

    var body: some View {
        HStack {
            Image("Mars")
                .resizable()
                .frame(width: 50, height: 50)
            VStack(alignment: .leading) {
                Text(planet.name)
                    .font(.largeTitle)
                Text(planet.overview)
                    .font(.caption)
            }
            .lineLimit(nil)
        }
    }
}

struct PlanetList : View {
    var body: some View {
        NavigationView {
            List(planetData.identified(by: \.id)) { planet in
                NavigationLink(destination: PlanetDetail(planet: planet)) {
                    PlanetRow(planet: planet)
                }
                .frame(height: 150)
            }
            .navigationBarTitle(Text("Planets"))
        }
    }
}

NavigationLink with Frame Height NavigationLink without Frame Height

...