'some View' 类型的值没有成员 'baselineOffset'

Value of type 'some View' has no member 'baselineOffset'

我正在尝试构建自定义视图修改器。我的代码如下。

import SwiftUI

struct Heading: ViewModifier {
    let color: Color
    let size: CGFloat
    let align: TextAlignment
    
    func body(content: Content) -> some View {
        content
            .font(Font.custom("HunterHeartFreeFont", size: size))
            .baselineOffset(-14)
            .foregroundColor(color)
            .multilineTextAlignment(align)
      }
}

extension View {
  func heading(
    color: Color = .white,
    size: CGFloat = 42,
    align: TextAlignment = .center
  ) -> some View {
      modifier(Heading(color: color, size: size, align: align))
  }
}

我遇到错误 Value of type 'some View' has no member 'baselineOffset'

我是 Swift 和 SwiftUI 的新手,所以我不知道如何解决这个问题,也没有找到答案。我假设 baselineOffset 修饰符仅适用于文本视图,并且该修饰符应该适用于任何视图。

有没有办法让这个修改器只对文本视图起作用?或者有其他方法可以解决这个问题吗?

baselineOffset 修饰符仅适用于 Text,但 ViewModifier 中的 content 是不透明的通用视图。

相反,您可以直接扩展 Text,例如

extension Text {
  func heading(
    color: Color = .white,
    size: CGFloat = 42,
    align: TextAlignment = .center
  ) -> some View {
        self.font(Font.custom("HunterHeartFreeFont", size: size))
        .baselineOffset(-14)
        .foregroundColor(color)
        .multilineTextAlignment(align)
  }
}