У меня есть UIBarButtonItem
в моем UIToolbar
названии Готово . Теперь я хочу изменить шрифт по умолчанию на «Trebuchet MS» с полужирным шрифтом. Как я могу это сделать?
ios
cocoa-touch
uibarbuttonitem
Анкит Вьяс
источник
источник
Для тех, кто заинтересован в использовании
UIAppearance
для стилизации своихUIBarButtonItem
шрифтов во всем приложении, это можно сделать с помощью этой строки кода:Цель C:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]}; [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift 2.3:
UIBarButtonItem.appearance().setTitleTextAttributes( [ NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!, NSForegroundColorAttributeName : UIColor.white ], for: .normal)
Swift 3
UIBarButtonItem.appearance().setTitleTextAttributes( [ NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!, NSForegroundColorAttributeName : UIColor.white, ], for: .normal)
Swift 4
UIBarButtonItem.appearance().setTitleTextAttributes( [ NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!, NSAttributedStringKey.foregroundColor : UIColor.white, ], for: .normal)
Или для одного UIBarButtonItem (не для всего приложения), если у вас есть собственный шрифт, в частности, для одной кнопки:
Swift 3
let barButtonItem = UIBarButton() barButtonItem.setTitleTextAttributes([ NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!, NSForegroundColorAttributeName : UIColor.white, ], for: .normal) barButtonItem.title = "\u{f02a}"
Swift 4
let barButtonItem = UIBarButton() barButtonItem.setTitleTextAttributes([ NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!, NSAttributedStringKey.foregroundColor : UIColor.white, ], for: .normal) barButtonItem.title = "\u{f02a}"
Конечно, вы можете изменить шрифт и размер на все, что захотите. Я предпочитаю поместить этот код в
AppDelegate.m
файл вdidFinishLaunchingWithOptions
разделе.Доступные атрибуты (просто добавьте их в
NSDictionary
):NSFontAttributeName
: Изменить шрифт с помощьюUIFont
NSForegroundColorAttributeName
: Изменить цвет с помощьюUIColor
NSShadow
: Добавить тень (см.NSShadow
Справочник по классу)(Обновлено для iOS7 +)
источник
В Swift вы бы сделали это следующим образом:
backButtonItem.setTitleTextAttributes([ NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!, NSForegroundColorAttributeName : UIColor.blackColor()], forState: UIControlState.Normal)
источник
Это отличные ответы выше. Просто обновление для iOS7:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]}; [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
источник
Swift3
buttonName.setAttributedTitle([ NSFontAttributeName : UIFont.systemFontOfSize(18.0), NSForegroundColorAttributeName : UIColor.red,NSBackgroundColorAttributeName:UIColor.black], forState: UIControlState.Normal)
стремительный
barbutton.setTitleTextAttributes([ NSFontAttributeName : UIFont.systemFontOfSize(18.0), NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Normal)
Цель-C
[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName, [UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName, nil] forState:UIControlStateNormal];
источник
Для некоторых,
UIBarButtonItems
но не всех, я рекомендую следующий подход.UIBarButtonItem
подкласс. Не добавляйте к нему ничего - вы будете использовать его только как настраиваемый класс в раскадровке и для его прокси внешнего вида ...UIBarButtonItems
нужно для вашего подкласса.UIBarButtonItem
подкласс и добавьте следующую строку вapplication:didFinishLaunchingWithOptions:
В моем случае я выделил подклассы
UIBarButtonItem
с единственной целью - выделить текст жирным шрифтом:[[BoldBarButtonItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil] forState:UIControlStateNormal];
источник
В Swift 4 вы можете изменить шрифт и цвет
UIBarButtonItem
, добавив следующий код.addTodoBarButton.setTitleTextAttributes( [ NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!, NSAttributedStringKey.foregroundColor: UIColor.black ], for: .normal)
источник
Реализация Swift 5
rightButtonItem.setTitleTextAttributes([ NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!, NSAttributedString.Key.foregroundColor: UIColor.green], for: .normal)
источник
Это правильный путь: объявите свой barButtonItem (в данном случае rightBarButtonItem) и добавьте его setTitleTextAttributes.
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
после того, как вы можете добавить атрибуты заголовка
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
вы можете изменить размер, вес (жирный, тяжелый, обычный и т. д.) и цвет по своему усмотрению ... Надеюсь на эту помощь :)
источник
быстрый 3
barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal)
источник
Во всем приложении:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) { UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal) }
источник
UIBarButton
не имеет свойства, связанного с изменением шрифта. Но вы можете создать кнопку с настраиваемым шрифтом, а затем добавить в UIBarButton. Возможно, это решит вашу проблемуисточник
Предполагая, что вы хотите поддерживать iOS4 и более ранние версии, лучше всего создать кнопку панели с помощью этого
initWithCustomView:
метода и предоставить собственное представление, которое может быть чем-то вроде UIButton, где вы можете легко настроить шрифт.Вы также можете перетащить UIButton на панель инструментов или панель навигации в Интерфейсном Разработчике, если вы хотите создать кнопку с помощью перетаскивания, а не программно.
К сожалению, это означает создание фонового изображения кнопки самостоятельно. Невозможно настроить шрифт стандартного UIBarButtonItem до iOS5.
источник
Вы можете создать кастом
UIView
программно:UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
Затем добавьте изображения, метки или что угодно в свой собственный вид:
[buttonItemView addSubview:customImage]; [buttonItemView addSubview:customLabel]; ...
Теперь поместите его в свой
UIBarButtomItem
.UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
И, наконец, добавьте barButtonItem на панель навигации.
источник
В завершение я хотел бы добавить этот метод, который до сих пор используется в Objective-C в 2019 году. :)
_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _titleLabel.text = _titleBarButtonItem.title; _titleLabel.textColor = UIColor.whiteColor; _titleLabel.font = [UtilityMethods appFontProDisplayBold:26.0]; [_titleLabel sizeToFit]; UIBarButtonItem *titleLabelItem = [[UIBarButtonItem alloc] initWithCustomView:_titleLabel];
источник