У меня есть Список , состоящий из ячеек, каждая из которых содержит изображение, и столбца текста, который я sh выложил определенным c способом. Изображение слева, занимающее четверть ширины. Остальное пространство отведено под текст, который выровнен по левому краю.
Вот полученный мной код:
struct TestCell: View {
let model: ModelStruct
var body: some View {
HStack {
Image("flag")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: UIScreen.main.bounds.size.width * 0.25)
VStack(alignment: .leading, spacing: 5) {
Text("Country: Moldova")
Text("Capital: Chișinău")
Text("Currency: Leu")
}
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
}
}
}
struct TestCell_Previews: PreviewProvider {
static var previews: some View {
TestCell()
.previewLayout(.sizeThatFits)
.previewDevice("iPhone 11")
}
}
И вот 2 примера:
Как видите, высота всей ячейки варьируется в зависимости от соотношения сторон изображения.
1 млн долларов на вопрос - Как сделать так, чтобы высота ячейки охватывала текст ( как на втором изображении) и не изменять, а скорее сжимать изображение в виде scaleAspectFit внутри выделенного прямоугольника
Примечание!
- высота текста может меняться, поэтому без жесткого кодирования.
- Не удалось заставить его работать с
PreferenceKey
s, так как ячейки будут частью списка, и есть какое-то странное поведение, которое я пытаюсь gr asp вокруг повторного использования ячеек и onPreferenceChange
не вызывается, когда 2 последовательные ячейки имеют одинаковую высоту. Чтобы продемонстрировать все это комбинированное поведение, убедитесь, что ваша модель различается между ячейками при ее тестировании.