WrappingHStack — это элемент пользовательского интерфейса, который работает очень похоже на HStack, но автоматически размещает переполняющие элементы на следующих строках.
WrappingHStack {
Text ( " WrappingHStack " )
. padding ( )
. font ( . title )
. border ( Color . black )
Text ( " can handle different element types " )
Image ( systemName : " scribble " )
. font ( . title )
. frame ( width : 200 , height : 20 )
. background ( Color . purple )
Text ( " and loop " )
. bold ( )
WrappingHStack ( 1 ... 20 , id : . self ) {
Text ( " Item: ( $0 ) " )
. padding ( 3 )
. background ( Rectangle ( ) . stroke ( ) )
} . frame ( minWidth : 250 )
}
. padding ( )
. border ( Color . black )
Требования iOS 13+
. package ( url : " https://github.com/dkk/WrappingHStack " , . upToNextMajor ( from : " 2.0.0 " ) )
Просто добавьте следующую строку в свой Podfile
:
pod 'WrappingHStack'
Импортируйте пакет WrappingHStack в свое представление:
import WrappingHStack
используйте его так же, как HStack для отдельных элементов:
WrappingHStack {
/* some views */
NewLine ( ) // Optional: Use NewLine to force the next element to be placed in a next line
/* some more views */
}
или как ForEach для перебора элементов:
WrappingHStack ( 1 ... 30 , id : . self ) {
Text ( " Item: ( $0 ) " )
}
Вы управляете положением элементов с помощью параметра alignment
, который задает HorizontalAlignment
элементов. Т.е. ведущий, конечный или центрированный.
Для еще большего удобства и гибкости WrappingHSTack
предлагает параметр spacing
, который определяет, как будет рассчитываться интервал. Это может быть один из следующих типов:
.constant
: для фиксированного интервала каждая строка начинается с элемента, а горизонтальное разделение между любыми двумя элементами равно заданному значению..dynamic
: чтобы элементы заполняли ширину WrappingHSTack. Вы можете передать минимальный интервал..dynamicIncludingBorders
, чтобы заполнить всю ширину с равным интервалом между элементами и от элементов до границы. Вы можете передать минимальный интервал. WrappingHStack
в NavigationLink
(только для iOS16).Вы можете внести свой вклад в этот проект, помогая мне решить любые проблемы, о которых сообщалось, или запросы на добавление функций, а также создав запрос на включение.
Спонсорьте этот проект, чтобы получить вознаграждение и моральную поддержку.
WrappingHStack был первоначально разработан Дэниелом Клёком и выпущен под лицензией MIT.