xcode SwiftUI如何将文本修饰符应用到包含文本的自定义视图

jq6vz3qz  于 2023-06-24  发布在  Swift
关注(0)|答案(1)|浏览(71)

我创建了一个自定义文本组件,将Text Package 在其中。

struct ScrollText:View{
    let text: String
    var body: some View {
        Text("\(text) the logic is like that")
    }
}

然后我希望这个视图可以使用文本的修饰符,如.font.fontWeight.tracking

ScrollText(text:"abcdefg")
     .font(.body)
     .tracking(-0.3)

但是我发现在iOS 15中只有.font可以工作。我能做些什么使它像普通的文本组件一样工作?

kuuvgm7e

kuuvgm7e1#

为什么文本修饰符不能在我的自定义视图中使用,是因为在iOS 15中,这些修饰符只适用于类型“文本”,但我们的视图返回“一些视图”。
所以可以通过使用

extension Text{
    func addaPlus(activate:Bool)->some View{
        return ScrollText(text: self, activate: activate)
    }
}

在这个函数中,self表示Text,而不是将字符串传递给视图,而是传递Text并将其放在最后一个位置,这将Text转换为视图。
顺便说一句,我不知道如何通过这样来读取和修改文本中的字符串。

Text(longText)
         .tracking(-0.3)
         .addaPlus(activate: activate)

但是如果你可以返回Text而不是某些View,你仍然可以在下面使用Text-only修饰符。

相关问题