SwiftUI: पाठ में रोटेशन के बाद स्क्रीन की पूरी चौड़ाई नहीं है

Dec 01 2020

ऐप केवल पॉट्रेट मोड का समर्थन करता है। दो प्रश्नों को प्रदर्शित किया जाना चाहिए, लेकिन उन्हें तदनुसार घुमाया जाता है। इसलिए खिलाड़ी सवालों को अच्छी तरह से देख सकते हैं, चाहे वे कहीं भी बैठें।

वैसे भी, ऐसा लगता है कि बाउंडिंग बॉक्स को घुमाते समय घुमाया नहीं गया है।

ZStack {
        HStack {
            GeometryReader { proxy in
                Text(challenge)
                    .rotationEffect(Angle(degrees: 90), anchor: .center)
                    .frame(maxWidth: proxy.size.height, minHeight: proxy.size.width)
                    .foregroundColor(.red)
                    .font(.largeTitle)
                    .background(Color.blue)
            }
            Spacer()
            GeometryReader { proxy in
                Text(challenge)
                    .rotationEffect(Angle(degrees: 270), anchor: .center)
                    .frame(maxWidth: proxy.size.height, minHeight: proxy.size.width)
                    .foregroundColor(.red)
                    .font(.largeTitle)
                    .background(Color.blue)
            }
        }
    }

मैंने कई अलग-अलग चीजों की कोशिश की है। मैंने बाहर छोड़ दिया GeometryReaderऔर 'तयशुदा () `के साथ काम किया। फिर मुझे एक-लाइनर मिलता है जो स्क्रीन के पार जाता है।

मैंने इस समाधान की भी कोशिश की है , लेकिन यह अपेक्षा के अनुरूप काम नहीं करता है।

मेरा परिणाम हमेशा एक पाठ होता है जिसमें पूर्ण चौड़ाई का उपयोग नहीं होता है। (ओवरलैपिंग सिर्फ एक और गलती है, लेकिन मुझे निश्चित रूप से नियंत्रण में होगा)।

मैं वास्तव में क्या करना चाहता हूं:

जवाब

2 Asperi Dec 01 2020 at 23:33

यहाँ संभावित दृष्टिकोण का एक डेमो है। Xcode 12.1 / iOS 14.1 के साथ तैयार

struct DemoView: View {
    var body: some View {
        HStack {
            RotatedText(text: lorem, angle: Angle(degrees: 90))
            RotatedText(text: lorem, angle: Angle(degrees: -90))
        }
    }
}

struct RotatedText: View {
    let text: String
    let angle: Angle
    var color: Color = .blue
    
    var body: some View {
        color.overlay(
            GeometryReader { gp in
                VStack {
                    Text(text)
                        .frame(width: gp.size.height, height: gp.size.width)
                        .rotationEffect(angle)
                }.frame(width: gp.size.width, height: gp.size.height)
            }
        )
    }
}