Настройка Swift UI делает прямоугольник квадратным
В SwiftUI у меня есть VStack с прямоугольником внутри. Прямоугольник автоматически заполняет родительский VStack, что отлично подходит для ширины, но я хочу сделать высоту равной ширине, чтобы он был квадратным. Как установить соотношение сторон 1:1 или установить высоту = ширина?
VStack {
Rectangle()
.frame(height: ?? ) // I want to make the height equal to width so it's square
Spacer()
}
2 ответа
Решение
Вам нужен модификатор.aspectRadio():
public func aspectRatio(_ aspectRatio: CGFloat? = nil,
contentMode: ContentMode) -> some View
- Параметры:
- аспект Ratio: отношение ширины к высоте, используемое для результирующего представления. Если
aspectRatio
являетсяnil
, результирующее представление сохраняет соотношение сторон этого представления.- contentMode: флаг, указывающий, должно ли это представление соответствовать родительскому контексту или заполнять его.
- Возвращает: представление, которое ограничивает размеры этого представления до
aspectRatio
, с помощьюcontentMode
в качестве алгоритма масштабирования.
если вы дадите ему явный aspectRatio
1.0 вы можете быть уверены, что он сохранит свою квадратную форму:
VStack {
Rectangle()
.aspectRatio(1.0, contentMode: .fit)
Spacer()
}
Я полагаю, вы этого ожидаете
VStack {
Rectangle()
.aspectRatio(contentMode: .fit)
Spacer()
}