Как мне покрасить SwiftUI Rectangle двумя разными цветами? - PullRequest
0 голосов
/ 06 января 2020

Предположим, у меня есть простой прямоугольник SwiftUI, такой как:

Rectangle()
  .frame(width: 20, height: 20)

Как я могу покрасить одну половину из него белым под углом 45 градусов, а другую половину - черным под углом 45 градусов?

Первоначально я предполагал наложить два прямоугольника друг на друга с помощью ZStack, но этот способ кажется мне хакерским.

Ответы [ 2 ]

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

Простая геометрия может быть достигнута с помощью transforming the shape:

    Rectangle().rotation(.degrees(45), anchor: .bottomLeading).scale(sqrt(2), anchor: .bottomLeading).frame(width: 200, height: 200).background(Color.red).foregroundColor(Color.blue).clipped()
0 голосов

Вы должны использовать path для рисования. Моя идея состоит в том, чтобы поместить Rectangle и Triangle в ZStack:

struct GradientRectangle: View {

    var body: some View {

        ZStack {
            Rectangle()

            Triangle()
                .foregroundColor(.red) // here should be .white in your case
        }
            .frame(width: 300, height: 300)

    }
}

struct Triangle: Shape {
    func path(in rect: CGRect) -> Path {
        var path = Path()

        path.move(to: CGPoint(x: rect.maxX, y: rect.minY))
        path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
        path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))

        return path
    }
}

результат будет:

enter image description here

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