Я создаю ячейку, в которой есть несколько текстов и изображение. Я хочу, чтобы один текст изменил размеры себя и своей ячейки, но как это сделать?
Я пытался использовать .fixedSize () и некоторые вычисления UILabel, но я мог это исправить.
Кнопка навигации, которая также является ячейкой в списке:
NavigationButton(destination: ..., isDetail: true, label: {
Cell(model: rowModel)
})
struct Cell: View {
var model: OfferModel
var body: some View {
VStack {
HStack {
Image(systemName: "camera").frame(width: 60, height: 60)
VStack(alignment: .leading) {
Text(model.name)
.font(.caption)
.textContentType(.name)
Text(self.model.text)
.lineLimit(3)
.multilineTextAlignment(.leading)
.font(.title)
}
Spacer()
OfferPriceView(model: model, alignment: .trailing)
}
OfferDetailInformationView(key: "Street", value: model.adress, style: .streetAddressLine1)
OfferDetailInformationView(key: "City", value: model.city, style: .addressCity)
OfferDetailInformationView(key: "Country", value: model.country, style: .countryName)
}
}
}
struct OfferDetailInformationView: View {
var key: String
var value: String
var style: UITextContentType?
init(key: String, value: String, style: UITextContentType? = nil) {
self.key = key
self.value = value
self.style = style
}
var body: some View {
HStack {
Text("\(key):").bold()
Text(value)
.textContentType(style)
Spacer()
}
}
}
struct OfferPriceView : View {
let model: OfferModel
let alignment: HorizontalAlignment
init(model: OfferModel = .example, alignment: HorizontalAlignment = .center) {
self.model = model
self.alignment = alignment
}
var body: some View {
VStack(alignment: alignment) {
Text("\(String(format: "%.2f", model.cost))\(model.currency)").bold().color(.red)
Text(model.paymentRate).color(.red)
}
}
}
Я бы хотел, чтобы текст с model.text расширялся по вертикали, если текст не помещается в одну строку. А пока он просто обрезает текст в одну строку.
Структура представления выглядит следующим образом:
- Просмотр содержимого:
- Список:
- Кнопка навигации:
- Вертикальный стек:
- Горизонтальный стек:
- Изображение
- Вертикальный стек:
- Текст (model.name)
- Текст (model.text)
- Распорка
- Вертикальный стек (внутри OfferPriceView):
- Горизонтальный стек (OfferDetailInformationView)
- Текст (валюта)
- Текст (оплата)
- Распорка