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似乎仍然充满了古怪的黑客行为。我只需要检查一下,在使用文本视图的度量方面,这样做是否有任何问题。