Настройка 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()
}
Другие вопросы по тегам