【问题标题】:How SwiftUI sets the spacing between the underline and the text?SwiftUI 如何设置下划线与文字的间距?
【发布时间】:2020-08-04 00:58:37
【问题描述】:

设置下划线的代码,我想让文字和下划线之间的空间变大。

 Text("underline text")
 .underline()

【问题讨论】:

    标签: ios swiftui


    【解决方案1】:

    下划线是一种字体功能,你可以在任何需要的地方画线来自定义下划线

    var body: some View {
        HStack {
            Text("Before")
            Text("underline text")
                .overlay(
                    Rectangle().frame(height: 1).offset(y: 4)
                    , alignment: .bottom)
            Text("after.")
        }
    }
    

    【讨论】:

    • 感谢您的解决方案,它对我有用,而且代码简洁。
    • 此解决方案的唯一缺点是您不能将Texts 与+ 操作结合起来,因为带有.overlay 修饰符的操作变成了View,而不是Text
    【解决方案2】:

    使用自定义视图代替 .underline 怎么样?

    struct MyUnderline: View {
          let color: Color = .black
          let height: CGFloat = 1
          var body: some View {
              Rectangle()
                .fill(color)
                .frame(height: height)
          }
    }    
    
    Text("underline text")
    MyUnderline()
      .padding(.top, -10)
    

    【讨论】:

    • 可以,但需要 VStack 打包
    【解决方案3】:

    您可以创建一个将文本和下划线填充作为参数的自定义视图

    struct UnderlinedText: View {
    
       var text: String
       var underlinePadding: CGFloat
    
       var body: some View {
           VStack (spacing: underlinePadding) {
               Text(text)
               GeometryReader { proxy in
                   Rectangle()
                       .frame(width: proxy.size.width, height: 1)
               }
            }
        }
    }
    

    并按如下方式使用

    UnderlinedText(text: "Hello underlined text", underlinePadding: 10.0)
    

    【讨论】:

    • 是一个可行的方案,但是overlay感觉更轻了
    • 可以通过改变矩形高度来改变粗细
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 2013-12-01
    • 2010-12-16
    • 2015-10-13
    相关资源
    最近更新 更多