Swiftui 将ViewModifier应用于UIViewRepresentable
我为UITextField创建了UIViewRespresentable。我想应用修饰符:Swiftui 将ViewModifier应用于UIViewRepresentable,swiftui,uiviewrepresentable,Swiftui,Uiviewrepresentable,我为UITextField创建了UIViewRespresentable。我想应用修饰符: myTextField.font(.headline).keyboardType(keyboardType) 即使我的UIViewRepresentable很简单,这也不起作用: class MyTextField: UITextField { ... } struct MyFieldField: UIViewRepresentable { private let field = MyText
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修饰符。此外,您还可以从SwiftUIFont
创建一个UIFont
。因此,尽管您可以使用@Environment(\.font)var font:font
获取当前值,但在UIKit land中,您将无法使用它做任何有用的事情
你可以:
UIViewRepresentable
UIFont.TextStyle
Font.TextStyle
和UIFont.TextStyle
UIViewRepresentable
上显式创建一个变量来保存该值,然后在updateUIView(上下文:)
struct MyFieldField:UIViewRepresentable{
//你的三个选择
var myUIFont:UIFont
var myUITextStyle:UIFont.TextStyle
var mySwiftUITextStyle:Font.TextStyle//将此映射到UIFont.TextStyle
...
}
谢谢。我希望有一种方法可以让MyTextField获得修饰符并遍历它们,然后将它们应用到底层的UITextField(如您所指出的那样映射它们)。