我为一个UIViewRespresentable创建了一个UITextField。我想使用修饰语:
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) {
...
}
}发布于 2019-11-13 06:22:40
UITextField是UIKit组件,而不是SwiftUI组件。它目前不尊重.font()或任何其他SwiftUI修饰符。此外,您可以从一个当前无法创建 Font中提取一个UIFont。因此,尽管您可以执行@Environment(\.font) var font: Font来获得当前值,但是您将无法在UIKit土地上使用它做任何有用的事情。
您可以:
UIFont直接设置在UIViewRepresentable上即可UIFont.TextStyleFont.TextStyle与UIFont.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
...
}https://stackoverflow.com/questions/58826659
复制相似问题