IOS - Идентификатор UIBarButtonItem - возможность создания кнопки "настройки" cogwheel
Я хочу создать UIBarButtonItem для представления настроек приложения (cogwheel). В настоящее время я могу найти вариант создания UIBarButtonItem (Interface Builder > Attributes Inspector > identifier), такого как "Добавить" (+), "Изменить", "Готово", "Отмена" и т.д.
Я не могу найти вариант создания значка настроек (cogwheel). Есть ли способ сделать это в построителе интерфейса или через код?
Или мне нужно создать изображение, а затем изображение?
Ответы
Ответ 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}
к строке, она отображается как эможи и невосприимчива к любым настройкам внешнего вида. Добавление этой строки исправляет это.