我的UIBarButtonItem
标题为完成,UIToolbar
。现在我想用Bold将字体从默认字体更改为“Trebuchet MS”。我怎么能这样做?
答案 0 :(得分:205)
准确地说,这可以按照以下方式完成
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
[UIColor greenColor], NSForegroundColorAttributeName,
nil]
forState:UIControlStateNormal];
或使用对象文字语法:
[buttonItem setTitleTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
为方便起见,这里是Swift实现:
buttonItem.setTitleTextAttributes([
NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedStringKey.foregroundColor: UIColor.green],
for: .normal)
答案 1 :(得分:122)
因为UIBarButtonItem继承自UIBarItem,所以可以尝试
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
但这仅适用于iOS5。对于iOS 3/4,您必须使用自定义视图。
答案 2 :(得分:118)
对于那些有兴趣使用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
class reference) (针对iOS7 +更新)
答案 3 :(得分:19)
在Swift中你会这样做:
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
答案 4 :(得分:16)
以上是很好的答案。只需更新iOS7:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
答案 5 :(得分:15)
<强> 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];
答案 6 :(得分:7)
为某些UIBarButtonItems
执行此操作但不是全部我建议使用以下方法。
UIBarButtonItem
子类。不要添加任何内容 - 您只能将它用作故事板中的自定义类及其外观代理...... UIBarButtonItems
的自定义类更改为您的子类UIBarButtonItem
子类并将以下行添加到application:didFinishLaunchingWithOptions:
在我的情况下,我将UIBarButtonItem
子类化为唯一的目的是加粗文本:
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
答案 7 :(得分:7)
在 Swift 4 中,您可以通过添加以下代码来更改UIBarButtonItem
的字体和颜色。
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
答案 8 :(得分:7)
Swift 5实施
rightButtonItem.setTitleTextAttributes([
NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedString.Key.foregroundColor: UIColor.green],
for: .normal)
答案 9 :(得分:2)
swift 3
barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal)
答案 10 :(得分:1)
整个应用程序:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
答案 11 :(得分:0)
UIBarButton
没有与更改字体相关的属性。但是您可以使用自定义字体创建一个按钮,然后添加到UIBarButton中。它可以解决你的问题
答案 12 :(得分:0)
假设您想要支持iOS4及更早版本,最好的办法是使用initWithCustomView:
方法创建一个条形按钮并提供您自己的视图,这可能类似于UIButton,您可以轻松自定义字体。< / p>
如果要使用拖放而不是以编程方式创建按钮,还可以将UIButton拖动到Interface Builder中的工具栏或导航栏上。
不幸的是,这意味着自己创建按钮背景图像。在iOS5之前无法自定义标准UIBarButtonItem的字体。
答案 13 :(得分:0)
您可以通过编程方式创建自定义UIView
:
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
然后将图片,标签或任何您喜欢的内容添加到自定义视图中:
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
现在将其放入UIBarButtomItem
。
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
最后将barButtonItem添加到导航栏。
答案 14 :(得分:0)
这是正确的方法: 声明您的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)
您可以根据自己的喜好更改大小,重量(.bold,.heavy,.regular等)和颜色... 希望有帮助:)
答案 15 :(得分:0)
为完成此操作,我想添加此方法,该方法仍将在2019年的Objective-C中使用。:)
_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];