Swiftui 垂直布局文字,使文字方向垂直
我想有一个垂直放置在图像顶部的文本,所以文本显示垂直。我已经编写了这样做的代码,但感觉像是黑客。我希望有人有更好的方法来做这件事。我的代码:Swiftui 垂直布局文字,使文字方向垂直,swiftui,Swiftui,我想有一个垂直放置在图像顶部的文本,所以文本显示垂直。我已经编写了这样做的代码,但感觉像是黑客。我希望有人有更好的方法来做这件事。我的代码: import SwiftUI struct VerticalText: View { let input = "12.4" let myFont = Font.system(size: 22.0).bold() var body: some View { ZStack { Rectangle().
import SwiftUI
struct VerticalText: View {
let input = "12.4"
let myFont = Font.system(size: 22.0).bold()
var body: some View {
ZStack {
Rectangle().fill(Color.yellow).frame(width: 100, height: 100, alignment: .center)
getText()
}
}
func getText() -> some View {
let chars = input.map { String($0) }
return VStack {
ForEach(chars, id: \.self) { char in
if char == "." {
Text(char)
.font(myFont)
.frame(width: .infinity, height: 2, alignment: .center)
.offset(x: 0.0, y: -6.0)
}else {
Text(char)
.font(myFont)
}
}
}
}
}
struct VerticalText_Previews: PreviewProvider {
static var previews: some View {
VerticalText()
}
}
一些注意事项:
- 为了回答这个问题,我用一个矩形替换了图像,并将输入简化为一个常量
- 输入将是一个介于0和100之间的数字。可以选择最多两位小数
- 当输入为十进制数时,“.”的if块用于收紧间距。如果没有它,结果看起来像:
然而,上面的代码感觉像是黑客攻击。偏移量是硬编码的,if语句感觉不正确。有没有更好的垂直布局文本的方法?我认为SwiftUI中没有一种本地方法可以做到这一点。我会坚持使用您的解决方案,但可能会建议使用.padding(.bottom,3)代替偏移量。好的,我将尝试使用padding代替。谢谢你@nicksarno