SwiftUI: Как динамически установить размер пользовательского представления - PullRequest
0 голосов
/ 07 января 2020

Я использую SwiftUI. Мне нужен собственный вид. Ширина пользовательского вида должна быть равна ширине суперпредставления. Пользовательский вид содержит два вида изображения, выравнивая их по левому и правому краям соответственно. Каждый вид изображения имеет одинаковую ширину и высоту (соотношение сторон = 1). Два изображения имеют 10 точек. Я буду отображать изображения разных размеров в виде изображения (масштабное заполнение).

enter image description here

Если я использую GeometryReader, я могу установить вид изображения динамически, но как динамически установить кадр GeometryReader? Если я использую HStack без GeometryReader, рамки просмотра изображений будут переменными. Как это сделать в SwiftUI?

1 Ответ

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

Возможно какой-то вариант из следующего:

struct CustomView: View {
    var body: some View {
        HStack(spacing: 10) {
            Image(systemName: "heart.fill")
                .resizable()
                .aspectRatio(1, contentMode: .fit)

            Image(systemName: "heart.fill")
                .resizable()
                .aspectRatio(1, contentMode: .fit)
        }.frame(maxWidth: .infinity)
    }
}

Оба изображения поддерживают соотношение сторон 1: 1 с интервалом между ними 10 точек, но им разрешается расти по горизонтали с использованием модификатора .frame.

Замените Image(systemName: "heart.fill") нужным источником изображения по мере необходимости.

Если у вашего исходного изображения нет соотношения сторон 1: 1, установите contentMode в .fill и ограничьте высоту кадра либо HStack, либо CustomView внутри родительского элемента, используя .frame(height: ..).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...