gpt4 book ai didi

swiftui - 将 ViewModifier 应用于 UIViewRepresentable

转载 作者:行者123 更新时间:2023-12-04 02:42:17 37 4
gpt4 key购买 nike

我为 UITextField 创建了一个 UIViewRespresentable。我想应用修饰符:

myTextField.font(.headline).keyboardType(keyboardType)

这不起作用,即使我的 UIViewRepresentable 很简单:
class MyTextField: UITextField { ... }

struct MyFieldField: UIViewRepresentable {
private let field = MyTextField()
func makeUIView(context: Context) -> MyTextField { return field }
func updateUIView(_ uiView: MyTextField, context: Context) {
...
}
}

最佳答案

UITextField是一个 UIKit 组件,而不是一个 SwiftUI 组件。它目前不尊重 .font()或任何其他 SwiftUI 修饰符。此外,您cannot currently create UIFont来自 SwiftUI Font .所以,虽然你可以做 @Environment(\.font) var font: Font要获得当前值,您将无法在 UIKit 土地上使用它做任何有用的事情。

你可以:

  • 只需设置一个 UIFont直接在您的 UIViewRepresentable
  • 使用 UIFont.TextStyle
  • 之间的 map Font.TextStyleUIFont.TextStyle

  • 使用这些中的任何一个,您都需要在 UIViewRepresentable 上显式地创建一个变量。保持该值,然后在 updateUIView(context:) 期间应用它

    struct MyFieldField: UIViewRepresentable {
    // Your three options
    var myUIFont: UIFont
    var myUITextStyle: UIFont.TextStyle
    var mySwiftUITextStyle: Font.TextStyle // map this onto UIFont.TextStyle
    ...
    }

    关于swiftui - 将 ViewModifier 应用于 UIViewRepresentable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826659/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com