iOS - UIBarButtonItem Identifier - опция для создания кнопки «настройки» зубчатого колеса - PullRequest
45 голосов
/ 18 марта 2012

Я хочу создать UIBarButtonItem для представления настроек приложения (шестеренка). В настоящее время я могу только найти возможность создать UIBarButtonItem (Интерфейсный Разработчик> Инспектор атрибутов> идентификатор), такой как «Добавить» (+), «Редактировать», «Готово», «Отмена» и т. Д.

Я не могу найти вариант для создания значка настроек (зубчатого колеса). Есть ли способ сделать это в построителе интерфейса или через код?

Или я должен создать изображение, а затем изображение?

Ответы [ 4 ]

63 голосов
/ 18 марта 2012

В Юникоде есть несколько примечательных примеров, которые вы можете просто скопировать и вставить в объявление строки в XCode или использовать стандартный Unicode String Escape (\ uxxxx), и iOS на самом деле довольно свободно говорит о Unicode (я знаю некоторые из символовдовольно уродливо, но это Unicode для тебя '):

Unicode-символ' GEAR WITHOUT HUB '(U + 26ED): http://www.fileformat.info/info/unicode/char/26ed/index.htm

Unicode-символ' GEAR '(U + 2699): http://www.fileformat.info/info/unicode/char/2699/index.htm

Или подготовьте изображение и соответственно установите свойство customView UIBarButtonItem.

15 голосов
/ 20 февраля 2014

Составление CodaFi и user1046037 ответы:

Создание UIBarButtonItem с символом Юникод в качестве заголовка.

Вы должны инициализировать UIBarButtonItem заголовком (initWithTitle:), а не системным элементом (initWithBarButtonSystemItem:).

Вы можете установить пользовательский заголовок со строкой (например, символ Unicode).

Вы можете изменить размер заголовка.

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"\u2699" style:UIBarButtonItemStylePlain target:self action:@selector(showSettings)];

UIFont *customFont = [UIFont fontWithName:@"Helvetica" size:24.0];
NSDictionary *fontDictionary = @{NSFontAttributeName : customFont};
[settingsButton setTitleTextAttributes:fontDictionary forState:UIControlStateNormal];
6 голосов
/ 16 мая 2017

Это работает для меня в Swift 3 и iOS 10 ...

let settingsButton = UIBarButtonItem(title: NSString(string: "\u{2699}\u{0000FE0E}") as String, style: .plain, target: self, action: #selector(settings))
let font = UIFont.systemFont(ofSize: 28) // adjust the size as required
let attributes = [NSFontAttributeName : font]
settingsButton.setTitleTextAttributes(attributes, for: .normal)

См. Комментарий @ hazernut в принятом ответе. Без добавления \u{0000FE0E} к строке она отображается как смайлик и не зависит от настроек внешнего вида. Добавление этой строки исправляет это.

6 голосов
/ 26 апреля 2015

Чтобы получить значок зубчатого колеса с помощью Swift, выполните следующие действия в viewDidLoad(), предполагая, что вы перевели свою кнопку со своего вида в контроллер. (Пример: @IBOutlet var settingsButton: UIBarButtonItem!)

    self.settingsButton.title = NSString(string: "\u{2699}") as String
    if let font = UIFont(name: "Helvetica", size: 18.0) {
        self.settingsButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
    }
...