如何使用 swift 中的按钮点击动态更改 textview 中的字体?

Posted

技术标签:

【中文标题】如何使用 swift 中的按钮点击动态更改 textview 中的字体?【英文标题】:How to change font in textview dynamically with button tap in swift? 【发布时间】:2019-10-01 18:30:07 【问题描述】:

我创建了一个如下所示的文本视图,并添加了键盘按钮供用户更改字体。它正在工作,但它会更改整个文本的字体,但我只想在单击按钮后更改字体。你能帮忙吗?

   func setKeyboard()  // this is for keyboard button

    let bar = UIToolbar()

    let flex = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: self, action: nil)

     let font = UIBarButtonItem(image: UIImage(named: "icons8-image-80"), style: .plain, target: self, action: #selector(fontTapped))

bar.barTintColor = UIColor(displayP3Red: 30/255, green: 30/255, blue: 30/255, alpha: 1)
bar.sizeToFit()

    writePost.inputAccessoryView = bar



// and this one is fontTapped function

   @objc func fontTapped() 

    if fontTag == 0 
       let attributedText = NSMutableAttributedString(string: writePost.text, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 12)])
         writePost.attributedText = attributedText
        fontTag = 1

     else 

        writePost.font = UIFont(name: "AvenirNext-DemiBoldItalic", size: 16)
        fontTag = 0


【问题讨论】:

不清楚“我只想在单击按钮后更改字体”是什么意思。你说的是writePost.attributedText = attributedText,它改变了整个文本视图的字体;目前尚不清楚您还期望什么或您还想要什么。你能解释得更清楚吗?可以举个例子说明你希望做什么? 好吧,例如我在写;带有斜体字体的“hello world”这是我的文本视图的默认字体。然后我点击“fontTapped”并写下:“I am x code”。所以我想“hello world”仍然是斜体字体,但“I am x Code”改为粗体字 【参考方案1】:

要更改用户输入的字体/样式从现在开始,请更改文本视图的typingAttributes

https://developer.apple.com/documentation/uikit/uitextview/1618629-typingattributes

【讨论】:

【参考方案2】:

您将像这样使用 UITextField 的属性文本属性:

https://medium.com/swift-india/multiple-font-style-for-uilable-text-using-nsattributed-string-3f121036a533

并且可能在 UITextFieldDelegate 的 shouldChangeCharactersInRange() 中构建您的属性字符串,以更改传入字符的字体。

How shouldChangeCharactersInRange works in Swift?

【讨论】:

以上是关于如何使用 swift 中的按钮点击动态更改 textview 中的字体?的主要内容,如果未能解决你的问题,请参考以下文章

在swift UI中点击按钮时如何更改背景颜色和图像?

Swift:如何在单击提交按钮时更改 UIButton 图像

(Swift) 如何使用触摸按钮更改 pageviewcontroller 中的视图

点击时如何将播放按钮更改为暂停按钮?

UITableView:单击按钮时如何动态更改单元格高度?迅速

如何实现左右滑动以更改 swift IOS 中的数据/视图?