ios 你如何在 UIBarItem 中使用 setTitleTextAttributes:forState ?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7810563/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do you use setTitleTextAttributes:forState in UIBarItem?
提问by BeMyGuestPlease
How do you use setTitleTextAttributes:forState:
in UIBarItem
in iOS
?
如何使用setTitleTextAttributes:forState:
在UIBarItem
中iOS
?
How do you set the NSDictionary
? Can't make it work and documentation isn't very clear about that.
你是怎么设置的NSDictionary
?无法使其工作,并且文档对此不是很清楚。
From the documentation:
从文档:
setTitleTextAttributes:forState:
Sets the title's text attributes for a given control state:
为给定的控件状态设置标题的文本属性:
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
Parameters:
参数:
attributes: A dictionary containing key-value pairs for text attributes. You can specify the font, text color, text shadow color, and text shadow offset using the keys listed in NSString UIKit Additions Reference.
属性:包含文本属性键值对的字典。您可以使用 NSString UIKit Additions Reference 中列出的键指定字体、文本颜色、文本阴影颜色和文本阴影偏移。
state: The control state for which you want to set the text attributes for the title.
state:要为其设置标题文本属性的控件状态。
回答by Felix
Example code:
示例代码:
[[UIBarItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor,
[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont,
nil]
forState:UIControlStateNormal];
回答by Kampai
Swift 5.0:
斯威夫特 5.0:
// Bar title text color
let shadow = NSShadow()
shadow.shadowColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
shadow.shadowOffset = CGSize(width: 0, height: 1)
let color : UIColor = UIColor(red: 220.0/255.0, green: 104.0/255.0, blue: 1.0/255.0, alpha: 1.0)
let titleFont : UIFont = UIFont(name: "AmericanTypewriter", size: 16.0)!
let attributes = [
NSAttributedString.Key.foregroundColor : color,
NSAttributedString.Key.shadow : shadow,
NSAttributedString.Key.font : titleFont
]
self.navigationItem.rightBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)
// Or you can use
UIBarItem.appearance().setTitleTextAttributes(attributes, for: .normal)
Swift 4.0:
斯威夫特 4.0:
// Bar title text color
let shadow = NSShadow()
shadow.shadowColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
shadow.shadowOffset = CGSize(width: 0, height: 1)
let color : UIColor = UIColor(red: 220.0/255.0, green: 104.0/255.0, blue: 1.0/255.0, alpha: 1.0)
let titleFont : UIFont = UIFont(name: "AmericanTypewriter", size: 16.0)!
let attributes = [
NSAttributedStringKey.foregroundColor : color,
NSAttributedStringKey.shadow : shadow,
NSAttributedStringKey.font : titleFont
]
self.navigationItem.rightBarButtonItem?.setTitleTextAttributes(attributes, for: UIControlState.normal)
// Or you can use
UIBarItem.appearance().setTitleTextAttributes(attributes, for: UIControlState.normal)
Objective C code:
目标C代码:
NSShadow *shadow = [NSShadow new];
[shadow setShadowColor:[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]];
[shadow setShadowOffset:CGSizeMake(0, 1)];
NSDictionary *attributes = @{
NSForegroundColorAttributeName: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0],
NSShadowAttributeName: shadow,
NSFontAttributeName: [UIFont fontWithName:@"AmericanTypewriter" size:16.0]
};
[self.navigationItem.rightBarButtonItem setTitleTextAttributes:attributes forState: UIControlStateNormal];
// Or you can use.
[[UIBarItem appearance] setTitleTextAttributes:attributes forState: UIControlStateNormal];
回答by Shaheen Ghiassy
Here's phix23's code, just with an updated, and I think cleaner, syntax:
这是 phix23 的代码,只是更新了,我认为更简洁的语法:
[[UIBarItem appearance] setTitleTextAttributes:@{
UITextAttributeTextColor: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0],
UITextAttributeTextShadowColor: [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
UITextAttributeFont: [UIFont fontWithName:@"AmericanTypewriter" size:0.0]}
forState: UIControlStateNormal];
回答by Mike Mellor
[self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[UIColor whiteColor], nil] forKeys:[NSArray arrayWithObjects:UITextAttributeTextColor, nil]] forState:UIControlStateNormal];
回答by miniLV
Swift5set UIBarItem
title color
Swift5设置UIBarItem
标题颜色
let attributes = [
NSAttributedString.Key.foregroundColor : UIColor.orange,
NSAttributedString.Key.font : UIFont.systemFont(ofSize: 20)
]
vc.tabBarItem.setTitleTextAttributes(attributes, for: .normal)