SwiftUI TextField可表示,不增加字体大小 [英] SwiftUI TextField Representable not increasing Font Size

查看:74
本文介绍了SwiftUI TextField可表示,不增加字体大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆