Как изменить шрифт в текстовом представлении динамически с нажатием кнопки в Swift? - PullRequest
0 голосов
/ 01 октября 2019

Я создал текстовое представление, как показано ниже, и добавляю кнопку клавиатуры, чтобы пользователи могли менять шрифт. Он работает, но меняет шрифт всего текста, но я хочу менять шрифты только после нажатия кнопки. Можете ли вы помочь?

   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
}
}

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Чтобы изменить шрифт / стиль для того, что пользователь теперь набирает , , измените typingAttributes текстового представления.

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

0 голосов
/ 01 октября 2019

Вы будете использовать свойство attributetedText UITextField следующим образом:

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

И, вероятно, встраивайте свою атрибутированную строку в shouldChangeCharactersInRange () UITextFieldDelegate, чтобы изменитьшрифт входящих символов.

Как долженChangeCharactersInRange работать в Swift?

...