Text 如何获得超出屏幕边界的SwiftUI文本视图以与前缘对齐?

Text 如何获得超出屏幕边界的SwiftUI文本视图以与前缘对齐?,text,swiftui,alignment,Text,Swiftui,Alignment,我正在尝试这个: import SwiftUI struct LeftToRight: View { var body: some View { ZStack(alignment: .leading) { Color.black Text("ABCDEFGHIJKLMNOPQRSTUVWXYZ") .font(.system(size: 450)

我正在尝试这个:

import SwiftUI

struct LeftToRight: View {
    var body: some View {
        ZStack(alignment: .leading) {
            Color.black
            
            Text("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
                .font(.system(size: 450))
                .fixedSize(horizontal: true, vertical: false)
                .foregroundColor(Color.pink)
        }
        .edgesIgnoringSafeArea(.all)
    }
}

struct LeftToRight_Previews: PreviewProvider {
    static var previews: some View {
        LeftToRight()
    }
}
但是ZStack对齐没有效果,
文本
视图中心对齐(参见屏幕截图)

我尝试在文本视图本身上引导对齐指南,但也没有效果


那么,如何对齐此文本视图,使其无论有多大,都从左边缘开始并延伸到右边缘之外呢?

下面是一个可能的解决方案:

struct LeftToRight: View {
    var body: some View {
        ZStack(alignment: .leading) {
            Color.black

            Text("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
                .font(.system(size: 45))
                .foregroundColor(Color.pink)
                .fixedSize(horizontal: true, vertical: false)
                .frame(width: 0, alignment: .leading) // <- add here
        }
        .edgesIgnoringSafeArea(.all)
    }
}
struct LeftToRight:视图{
var body:一些观点{
ZStack(对齐:。引导){
颜色:黑色
文本(“abcdefghijklmnopqrstuvxyz”)
.font(.system(大小:45))
.foregroundColor(颜色:粉红色)
.fixedSize(水平:真,垂直:假)

.frame(宽度:0,对齐方式:.leading)/这里有一个安全的解决方案-使用文本框自然(因为它本身)只需将其放入具有显式对齐方式的容器覆盖层中即可

使用Xcode 12/iOS 14进行测试

var body: some View {
    ZStack(alignment: .leading) {
        Color.black
    }
    .edgesIgnoringSafeArea(.all)
    .overlay(
        Text("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
            .font(.system(size: 45))
            .foregroundColor(Color.pink)
            .fixedSize(horizontal: true, vertical: false)
    , alignment: .leading)                                  // here !!
}

非常感谢,Asperi。pawello2222的简单答案很好,但将帧宽度设置为0感觉很奇怪。但是,尽管此代码是独立工作的,但我现在需要将其他内容集成到堆栈中,因此使用覆盖不能作为解决方案。我测试并看到了
.frame(宽度:0…
可以工作,但它看起来像SwiftUI bug,所以在下一个版本中,苹果可能会将您的视图框设置为真实的0,并且它会在用户的手机上消失,否则我不会寻找其他安全解决方案。请注意。是的,谢谢。我不是100%确定-这感觉像是黑客攻击。我想找到一个解决方案d解决方案,可以将文本保留在视图的主体中,但似乎看不到它是什么。@codewithfeeling True,我的答案看起来像一个黑客。我只是在试验
.frame
,并注意到
对齐
参数仅在指定
宽度
的情况下才应用。这不重要lue,因为已经存在
.fixedSize(horizontal:true
@pawello2222再次感谢您的建议。我现在正在原型中使用它,它工作得很好。我自己仍在进行这方面的工作,并试图找到一个感觉可靠的解决方案。有趣的是,它似乎是任何固定宽度,非常感谢这一点。它工作得非常完美。必须将帧设置为0,这似乎很奇怪,但SwiftUI似乎仍然充满了古怪的黑客行为。我只需要检查一下,在使用文本视图的度量方面,这样做是否有任何问题。