SwiftUI TextField可表示,不增加字体大小 [英] SwiftUI TextField Representable not increasing Font Size
问题描述
我在Mac的SwiftUI应用中使用了可表示的View Controller.由于默认的TextField在SwiftUI(FirstResponder,占位符颜色)中非常有限,因此我使用的是可表示形式.
I am using a representable View Controller in my SwiftUI app for Mac. As the default TextField is very limited in SwiftUI (FirstResponder, Placeholder color) I am using a representable.
它工作正常,但是我无法增加 TextField 的字体大小,这对 SwiftUI 的默认 TextField 组件有效.
It works fine, however I can not increase the Font Size of the TextField, which does work for the default TextField component for SwiftUI.
这是我的NSViewController:
This is my NSViewController:
class TextFieldController: NSViewController {
@Binding var text: String
var isFirstResponder : Bool = true
init(text: Binding<String>, isFirstResponder : Bool = true) {
self._text = text
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func loadView() {
let textField = NSTextField()
textField.delegate = self
textField.font = NSFont(name: "SF Compact Text", size: 19.5) // Points
self.view = textField
}
override func viewDidAppear() {
self.view.window?.makeFirstResponder(self.view)
}
}
extension TextFieldController: NSTextFieldDelegate {
func controlTextDidChange(_ obj: Notification) {
if let textField = obj.object as? NSTextField {
self.text = textField.stringValue
}
}
}
这是我的代表
struct TextFieldRepresentable: NSViewControllerRepresentable {
@Binding var text: String
func makeNSViewController(
context: NSViewControllerRepresentableContext<TextFieldRepresentable>
) -> TextFieldController {
return TextFieldController(text: $text)
}
func updateNSViewController(
_ nsViewController: TextFieldController,
context: NSViewControllerRepresentableContext<TextFieldRepresentable>
) {
}
}
在这一行中,我试图更改TextField的Font,但是此处没有任何更改.
In this line, I am trying to change the Font of my TextField, however nothing is changing here.
textField.font = NSFont(name: "SF Compact Text", size: 19.5)
推荐答案
在viewDidAppear上分配字体对我有用.
Assigning the font on viewDidAppear worked for me.
class TextFieldController: NSViewController {
@Binding var text: String
let textField = NSTextField()
var isFirstResponder : Bool = true
init(text: Binding<String>, isFirstResponder : Bool = true) {
self._text = text
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func loadView() {
textField.delegate = self
textField.stringValue = text
self.view = textField
}
override func viewDidAppear() {
self.view.window?.makeFirstResponder(self.view)
textField.font = NSFont(name: "SF Compact Text", size: 19.5)
}
}
这篇关于SwiftUI TextField可表示,不增加字体大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!