Поворот текстового представления и его рамки в SwiftUI - PullRequest
0 голосов
/ 07 марта 2020

Я могу вращать текст в SwiftUI, используя RotateEffect, но он не поворачивает рамку. Как показано на рисунке, текст поворачивается, но рамка остается горизонтальной. Я бы тоже хотел повернуть рамку, чтобы она не занимала горизонтальное пространство. Это для приложения Ma c, где я использую HStack, чтобы предотвратить наложение видов текста и круга при изменении размера окна.

vertical text

import SwiftUI

struct ContentView: View {
    var body: some View {
        HStack {
            Text("Vertical text")
                .rotationEffect(.degrees(-90))
            Circle()
        }
        .frame(width: 400, height: 300)
    }
}

Одно из предложений - использовать ZStack. Это исправляет внешний вид текстового представления рядом с кругом, но не поворачивает рамку текстового представления. И если ZStack используется с окном с изменяемым размером, то Круг может перекрывать текстовое представление, поэтому я пытался использовать HStack в моем исходном примере.

resizable window

struct ContentView: View {
    var body: some View {        
        ZStack(alignment: .leading) {
            Text("Vertical text")
                .rotationEffect(.degrees(-90))
            Circle()
                .padding(.leading)
        }
        .frame(minWidth: 400, minHeight: 300)
    }
}

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Применение фиксированного размера и размера фрейма к текстовому представлению позволяет решить мою проблему. Это также хорошо работает для windows с изменяемым размером, потому что HStack предотвращает перекрытие текстового и кругового представлений.

enter image description here

import SwiftUI

struct ContentView: View {
    var body: some View {
        HStack {
            Text("Vertical text")
                .rotationEffect(.degrees(-90))
                .fixedSize()
                .frame(width: 20, height: 180)
            Circle()
                .frame(width: 200)
        }
        .frame(width: 400, height: 300)
    }
}
0 голосов
/ 07 марта 2020

Хорошо, прежде чем начать усложнять вещи, давайте попробуем упростить их, как насчет следующего:

demo

var body: some View {
    ZStack(alignment: .leading) {
        Text("Vertical text")
            .rotationEffect(.degrees(-90))
        Circle()
            .padding(.leading)
    }
    .frame(width: 400, height: 300)
}

да, это не реально, а только визуально эффект, однако он быстрый и простой и очень расширяемый ... не достаточно?

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