您的位置:首页 > 其它

NSMutableAttributedString/NSAttributedString 富文本设置

2015-02-09 04:52 567 查看


参考: http://stackoverflow.com/questions/11031623/how-can-i-use-attributedtext-in-uilabel
一、设置UILabel的属性attributedText(NSMutableAttributedString)

NSString *testStr = @"测试";

UILabel *testLab = ...(实例对象)

NSMutableParagraphStyle *ps = [[NSMutableParagraphStyle alloc] init];

[ps setAlignment:NSTextAlignmentCenter];

NSDictionary *attribs = @{

NSFontAttributeName: [UIFont fontWithName:@"Microsoft Yahei" size:45],

NSParagraphStyleAttributeName:ps};

NSMutableAttributedString *attributedText =[[NSMutableAttributedString alloc] initWithString:testStrattributes:attribs];

testLab.attributedText = attributedText;

ps:没有细看这段代码不过查了一下attributedText这个属性可以实现一个label显示多段不同颜色不同字体的文字

二、设置行距、行间距(NSMutableParagraphStyle)

UITextView*lab = [LocalTextsobjectAtIndex:j];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStylealloc]init];

paragraphStyle.lineHeightMultiple = 50.0f;

paragraphStyle.maximumLineHeight = 50.0f;

paragraphStyle.minimumLineHeight = 50.0f;

NSString *string = lab.text;

NSDictionary *ats = @{

NSFontAttributeName : [UIFont fontWithName:@"DIN Medium"size:16.0f],

NSParagraphStyleAttribut

eName: paragraphStyle,

};

lab.attributedText = [[NSAttributedStringalloc]initWithString:stringattributes:ats];//textview 设置行间距

ps:感觉好像上面是设置行距,下面说它还有个属性是lineSpacing,效果不佳试试这个

三、设置对齐方式、折行方式

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStylealloc] init];

paragraph.alignment = NSTextAlignmentJustified;//设置对齐方式

paragraph.lineBreakMode = NSLineBreakByWordWrapping;

四、NSMutableParagraphStyle、NSAttributedString(简单介绍,详细看API吧)

NSAttributedString的初始化方法有

-initWithString:用String初始化,并没有Attributed信息。

-initWithAttributedString:用AttributedString去初始化。

-initWithString:Attributed:用string及attribute的dictionary来初始化。

具体AttributtedString属性的键值对如下:

NSString *const NSFontAttributeName;//值为UIFont,设置字体,默认值为12-pointHelvetica(Neue)。



下面这段代码可以查看ios中可用的字体,具体那些字体长什么样,可以查看字体册工具。


NSArray *familyArray = [UIFont familyNames];

for (id family in familyArray)

{

printf(“%s\n”,[familycStringUsingEncoding:NSUTF8StringEncoding]);

NSArray *fontArray = [UIFontfontNamesForFamilyName:family];

for (id font in fontArray)

{

printf(” %s\n”,[fontcStringUsingEncoding:NSUTF8StringEncoding]);

}

}

NSString *constNSParagraphStyleAttributeName;//值为NSParagraphStyle,设置段落属性,默认值为[NSParagraphStyledefaultParagraphStyle]返回的值。

NSMutableParagraphStyle与NSParagraphStyle包括一下属性

alignment //对齐方式

firstLineHeadIndent //首行缩进

headIndent //缩进

tailIndent //尾部缩进

lineBreakMode //断行方式

maximumLineHeight //最大行高

minimumLineHeight //最低行高

lineSpacing //行距

paragraphSpacing //段距

paragraphSpacingBefore //段首空间

baseWritingDirection //句子方向

lineHeightMultiple //可变行高,乘因数。

hyphenationFactor //连字符属性

NSString *constNSForegroundColorAttributeName;//值为UIColor,字体颜色,默认为黑色。

NSString *constNSBackgroundColorAttributeName;//值为UIColor,字体背景色,默认没有。

NSString *constNSLigatureAttributeName;//值为整型NSNumber,连字属性,一般中文用不到,在英文中可能出现相邻字母连笔的情况。0为不连笔;1为默认连笔,也是默认值;2在ios上不支持。

NSString *constNSKernAttributeName;//值为浮点数NSNumber,字距属性,默认值为0。

NSString *constNSStrikethroughStyleAttributeName;//值为整型NSNumber,可取值为

enum {

NSUnderlineStyleNone =0×00,

NSUnderlineStyleSingle =0×01,

};设置删除线。

NSString *const NSUnderlineStyleAttributeName;//同上。设置下划线。

NSString *constNSStrokeColorAttributeName;//值为UIColor,默认值为nil,设置的属性ForegroundColor。

NSString *constNSStrokeWidthAttributeName;//值为浮点数NSNumber。设置比画的粗细。

NSString *constNSShadowAttributeName;//值为NSShadow,设置比画的阴影,默认值为nil。

NSString *constNSVerticalGlyphFormAttributeName;//值为整型NSNumber,0为水平排版的字,1为垂直排版的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: