1. 程式人生 > >IOS 給Label新增下劃線,刪除線,不同的顏色和大小

IOS 給Label新增下劃線,刪除線,不同的顏色和大小

iOS開發中,常常會有一段文字顯示不同的顏色和字型,或者給某幾個文字加刪除線或下劃線的需求。之前在網上找了一些資料,有的是重繪UILabeltextLayer,有的是用html5實現的,都比較麻煩,而且很多UILabel的屬性也不起作用了,效果都不理想。後來瞭解到NSMuttableAttstring(帶屬性的字串),上面的一些需求都可以很簡便的實現。

1.例項化方法和使用方法

例項化方法:

使用字串初始化

- (id)initWithString:(NSString *)str;

例:

NSMutableAttributedString *AttributedStr = [[

NSMutableAttributedStringalloc]initWithString:@"今天天氣不錯呀"];

- (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;

2.常見的屬性及說明

NSFontAttributeName 字型

NSParagraphStyleAttributeName 段落格式

NSForegroundColorAttributeName 字型顏色

NSBackgroundColorAttributeName  背景顏色

NSStrikethroughStyleAttributeName刪除線格式

NSUnderlineStyleAttributeName     下劃線格式

NSStrokeColorAttributeName       刪除線顏色

NSStrokeWidthAttributeName刪除線寬度

3.   使用例項

 UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)];

   testLabel.backgroundColor = [UIColor lightGrayColor];

   testLabel.textAlignment = NSTextAlignmentCenter;

   NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天氣不錯呀"];

   [AttributedStr addAttribute:NSFontAttributeName

                         value:[UIFont systemFontOfSize:16.0]

                         range:NSMakeRange(2, 2)];

   [AttributedStr addAttribute:NSForegroundColorAttributeName

                         value:[UIColor redColor]

                         range:NSMakeRange(2, 2)];

   testLabel.attributedText = AttributedStr;

   [self.view addSubview:testLabel];

NSShadowAttributeName 陰影

執行效果:

iOS富文字NSMutableAttributedString,NSAttributedString的使用 - snowyshell - snowyshell的部落格

另外,其他可以設定text 的控制元件(如UIButtonUITextField)也都有該屬性