Проблемы с рамкой SwiftUI List NavigationLink (высота: CGFloat)

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

Есть ли способ автоматической установки высоты рамки? Я пробовал много вещей, таких как установка высоты кадра в моем PlanetRow View, добавление отступов, установка lineLimit на: 0, 3, 5, ... Что бы я ни делал, если я не устанавливаю высоту для представления NavigationLink, 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 с высотой кадра  NavigationLink без высоты кадра


person otolock    schedule 08.07.2019    source источник
comment
Есть вероятность, что это ошибка бета-версии SwiftUI, которая, возможно, будет исправлена ​​в будущем обновлении.   -  person otolock    schedule 24.07.2019
comment
проверьте это решение, stackoverflow.com/questions/57565516/   -  person Nilay Padsala    schedule 21.05.2020