SwiftUI 文本意外填充底部和顶部

标签 swiftui swiftui-text

我需要精确控制文本占用的区域。我创建了最基本的程序,显示意外的顶部和底部间距被添加到文本中。这个额外的填充是从哪里来的?如何摆脱它?

@main
struct myApp: App {
    
    
    init() {    }
    
    var body: some Scene {
        WindowGroup {
            Text("80")
                .font(.system(size: 30, weight: .bold, design: .default))
                .background(Color.red)
        }
    }
}

enter image description here

最佳答案

文本似乎具有默认填充,如此处所示

enter image description here

你可以通过将 padding 调整为负数来克服这个问题

用这个替换你的代码

Text("80")
        .font(.system(size: 30, weight: .bold, design: .default))
        .padding(.vertical, -6)
        .background(Color.red)

如果你想让它动态化,这里有一个解决方案

  struct TestView: View {
    var fontSize: CGFloat = 110
    var paddingSize: CGFloat {
        -(fontSize * 0.23)
    }
    var body: some View {
        Text("80")
            .font(.system(size: fontSize, weight: .bold, design: .default))
            .padding(.vertical, paddingSize)
            .background(Color.red)
        Text("Hello")
    }
}

因此,即使像图片中那样使用 110 的大字体,您也可以按照自己喜欢的方式进行渲染 enter image description here

您需要根据自己的喜好调整乘数

关于SwiftUI 文本意外填充底部和顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66603212/

相关文章:

SwiftUI - IOS 15 - 文本 .mimimumScaleFactor - 始终被应用

swiftui - 在 SwiftUI 文本中获取单词的框架

mvvm - ViewModel Async Func 完成时如何从 subview 更新 EnvironmentObject

ios - SwiftUI:@State 已修改但在阅读之后的行时看似未更改

swift - 如何创建动画GIF

swift - 如何刷新弹出窗口

ios - 使用 SwiftUI 发送电子邮件

macos - 如何在 SwiftUI 中为文本预留空间