bar Button Элемент text Изменится при выборе в moonIcon как Font Awesome в swift 4 - PullRequest
0 голосов
/ 09 октября 2018

Я использовал этот код для использования MoonIcon Font, как шрифт Awesome в моем приложении для UIBarButtonItem в navigationController

let menuButton = UIBarButtonItem(title: publicSVGAssets().menu, style: UIBarButtonItemStyle.plain, target: self, action: #selector(menuAction))
menuButton.setTitleTextAttributes(NSDictionary(dictionary: [NSAttributedStringKey.font : UIFont(name: "icomoon", size: 25)!, NSAttributedStringKey.foregroundColor : UIColor.red]) as? [NSAttributedStringKey : Any], for: [])
self.navigationItem.rightBarButtonItem = menuButton

, это будет работать хорошо, но проблема в том, что при выборе пользователем кнопки значокизменится как на картинке ниже as you see in the photo the right Bar Button Image will change to question mark But I want that Menu Image like when the button Does not selected

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Это может быть что-то столь же простое, поскольку атрибут шрифта применяется только тогда, когда состояние кнопки .normal (как указано).

Возможно, вам потребуется указать, что все состояния кнопкипримените эти атрибуты текста заголовка, например, так:

let title = publicSVGAssets().menu
let style = UIBarButtonItemStyle.plain
let selector = #selector(menuAction)
let menuButton = UIBarButtonItem(title: title, style: style, target: self, action: selector)

let font = UIFont(name: "icomoon", size: 25)
let attributesDictionary: [NSAttributedStringKey: Any]? = [NSAttributedStringKey.font: font!, NSAttributedStringKey.foregroundColor : UIColor.red]
menuButton.setTitleTextAttributes(attributesDictionary, for: .normal)
menuButton.setTitleTextAttributes(attributesDictionary, for: .selected)
menuButton.setTitleTextAttributes(attributesDictionary, for: .highlighted)

self.navigationItem.rightBarButtonItem = menuButton

Нажатие на кнопку изменит ее состояние.Это может быть причиной того, что вы видите, как он меняет значок, когда вы нажимаете на него.

Примечание: если вам когда-либо понадобится показать кнопку в каком-либо другом состоянии (например, disabled), вам нужно будет присвоить этот же заголовокатрибуты текста для этого состояния.

... например:

menuButton.setTitleTextAttributes(attributesDictionary, for: .disabled)

(Примечание: это ответ, аналогичный тому, который дал @Satish).

0 голосов
/ 09 октября 2018
  1. Снова создайте шрифт.
  2. Загрузите и скопируйте правильный код.
  3. Удалите старый файл шрифта и добавьте новый файл шрифта (.ttf) в приложение.
  4. Убедитесь, что вы включили шрифт в список Fonts provided by application в info.plist.
  5. Используйте новый код.

setTitleTextAttributes(<#T##attributes: [String : Any]?##[String : Any]?#>, for: <#T##UIControlState#>)

    let dictionary = [NSAttributedString.Key.font : UIFont(name: "icomoon", size: 25)!, NSAttributedString.Key.foregroundColor : UIColor.red]

    menuButton.setTitleTextAttributes(dictionary, for: .normal)
    menuButton.setTitleTextAttributes(dictionary, for: .disabled)
    menuButton.setTitleTextAttributes(dictionary, for: .highlighted)
...