Подтвердить что ты не робот

IOS - Идентификатор UIBarButtonItem - возможность создания кнопки "настройки" cogwheel

Я хочу создать UIBarButtonItem для представления настроек приложения (cogwheel). В настоящее время я могу найти вариант создания UIBarButtonItem (Interface Builder > Attributes Inspector > identifier), такого как "Добавить" (+), "Изменить", "Готово", "Отмена" и т.д.

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

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

4b9b3361

Ответ 1

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

Unicode Character "GEAR WITHOUT HUB" (U + 26ED): http://www.fileformat.info/info/unicode/char/26ed/index.htm

Unicode Character 'GEAR' (U + 2699): http://www.fileformat.info/info/unicode/char/2699/index.htm

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

Ответ 2

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

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

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

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

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

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];

Ответ 3

Чтобы получить значок cogwheel с помощью 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)
    }

Ответ 4

Это работает для меня в 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} к строке, она отображается как эможи и невосприимчива к любым настройкам внешнего вида. Добавление этой строки исправляет это.