Тип Text
SwiftUI имеет модификатор, который позволяет переносить текст, если текст слишком длинный, чтобы помещаться горизонтально внутри его контейнера.Чтобы добиться переноса текста, просто передайте nil
в качестве аргумента модификатору lineLimit
:
Text("This text is too long to fit horizontally within its non-NavigationButton container. Therefore, it should wrap to fit, and it does.")
.font(.body)
.lineLimit(nil)
Вышеуказанное работает как положено, за исключением случаев использования внутри SwiftUI NavigationButton
.Все Text
экземпляры, которые я вложил в NavigationButton
экземпляры, не переносятся:
NavigationButton(destination: DestinationView()) {
Text("This text is too long to fit horizontally within its NavigationButton container. Therefore, it should wrap to fit, but it does not.")
.font(.body)
.lineLimit(nil)
}
Есть ли что-то, чего мне не хватает в приведенном выше коде, что позволило бы Text
экземплярам переносить в NavigationButton
instances?
Изменить, чтобы добавить больше контекста:
Исходное представление - List
, заключенное в NavigationView
.List
содержит экземпляры MeasurableItemsListItem
, которые заключены в NavigationButton
экземпляры, которые инициируют переход к дополнительному представлению, добавляемому в стек навигации:
struct MeasurableItemsList : View {
private let measurableItems = MeasurableItem.allCases
var body: some View {
NavigationView {
List(measurableItems.identified(by: \.self)) { measurableItem in
NavigationButton(destination: DosableFormsList(measurableItem: measurableItem)) {
MeasurableItemsListItem(measurableItem: measurableItem)
}
}
}
}
}
Каждый элемент списка, заключенный вNavigationButton
изготовлен из следующей структуры:
struct MeasurableItemsListItem : View {
let measurableItem: MeasurableItem
var body: some View {
Text(measurableItem.name)
.font(.body)
.foregroundColor(.primary)
.lineLimit(nil)
}
}