UINavgationBar提供了titleTextAttributes 属性来简单的设置其title样式,titleTextAttributes是一个NSDictionary类型,包含的固定的属性名称,可以用来设置title的样式,指定的属性keys
声明于NSString UIKit Additions Reference扩展中,包括:
NSString *constUITextAttributeFont,设置title的文字字体;
NSString*constUITextAttributeTextColor,设置title的文字颜色;
NSString*constUITextAttributeTextShadowColor,设置titlewz的阴影颜色;
NSString*constUITextAttributeTextShadowOffset,设置titlewz阴影的平移量 ;
如,设置title样式为:系统默认bold类型20号红色字体,阴影颜色为白色,右下偏移2像素
NSDictionary *navTitleArr =[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:20],UITextAttributeFont,
[UIColor redColor],UITextAttributeTextColor ,[NSValue valueWithCGSize:CGSizeMake(2.0,2.0)] , UITextAttributeTextShadowOffset,[UIColor whiteColor] ,UITextAttributeTextShadowColor ,nil][navBar setTitleTextAttributes:navTitleArr]
segmentcontrol的颜色字体
/改变segment的字体大小和颜色
NSDictionary*dic = [NSDictionarydictionaryWithObjectsAndKeys:[UIColorblackColor],UITextAttributeTextColor,[UIFontfontWithName:@"AppleGothic"size:14],UITextAttributeFont,nil]
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor],NSForegroundColorAttributeName, nil]
//设置各种状态的字体和颜色
[self.segmentedControlsetTitleTextAttributes:dicforState:UIControlStateNormal]
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想。后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。
-(id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs
字典中存放一些属性名和属性值,如:
NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys:
[UIFontsystemFontOfSize:15.0],NSFontAttributeName,
[UIColorredColor],NSForegroundColorAttributeName,
NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil]
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀" attributes:attributeDict]
-(id)initWithAttributedString:(NSAttributedString *)attester
使用NSAttributedString初始化,跟NSMutableString,NSString类似
使用方法:
为某一范围内文字设置多个属性
-(void)setAttributes:(NSDictionary *)attrs range:(NSRange)range
为某一范围内文字添加某个属性
-(void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range
为某一范围内文字添加多个属性
-(void)addAttributes:(NSDictionary *)attrs range:(NSRange)range
移除某范围内的某个属性
-(void)removeAttribute:(NSString *)name range:(NSRange)range
运行效果:
另外,其他可以设置text 的控件(如UIButton,UITextField)也都有该属性,该文章不够详细,只是简单介绍,其他效果的实现参考API中更多的属性及使用方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)