Настройка Swift UI делает прямоугольник квадратным - PullRequest
0 голосов
/ 12 января 2020

В SwiftUI у меня есть VStack с прямоугольником внутри. Прямоугольник автоматически заполняет родительский VStack, который отлично подходит для ширины, но я хочу сделать высоту равной ширине, чтобы она была квадратной. Как установить соотношение сторон 1: 1 или установить высоту = ширину?

VStack {
  Rectangle()
    .frame(height: ?? )  // I want to make the height equal to width so it's square
  Spacer()

}

Ответы [ 2 ]

1 голос
/ 12 января 2020

Вам нужен модификатор .aspectRadio ():

public func aspectRatio(_ aspectRatio: CGFloat? = nil,
                        contentMode: ContentMode) -> some View
  • Параметры:
    • aspectRatio: отношение ширины к высоте, используемое для получения Посмотреть. Если aspectRatio равно nil, результирующее представление сохраняет соотношение сторон этого представления.
    • contentMode: флаг, указывающий, должно ли это представление соответствовать или заполнять родительский контекст.
  • Возвращает: представление, которое ограничивает размеры этого представления aspectRatio, используя contentMode в качестве алгоритма масштабирования.

, если вы дадите ему явное aspectRatio из 1,0, вы можете убедитесь, что он сохранит свою квадратную форму:

VStack {
    Rectangle()
        .aspectRatio(1.0, contentMode: .fit)
    Spacer()
}
0 голосов
/ 12 января 2020

Полагаю, вы ожидаете этого

enter image description here

VStack {
    Rectangle()
        .aspectRatio(contentMode: .fit)
    Spacer()
}
...