1. 程式人生 > >iOS 使用NSMutableAttributedString實現不同顏色尺寸文字 —— HERO部落格

iOS 使用NSMutableAttributedString實現不同顏色尺寸文字 —— HERO部落格

NSMutableAttributedString:

可變屬性字串,實現一段字串中顯示不同的顏色、字型等屬性樣式。使用靈活、便捷。

方法:

//為某一範圍內文字設定多個屬性

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

屬性:

  • NSFontAttributeName //字型
  • NSParagraphStyleAttributeName//段落格式
  • NSForegroundColorAttributeName//字型顏色
  • NSBackgroundColorAttributeName //背景顏色
  • NSStrikethroughStyleAttributeName//刪除線格式
  • NSUnderlineStyleAttributeName//下劃線格式
  • NSStrokeColorAttributeName //
    刪除線顏色
  • NSStrokeWidthAttributeName //刪除線寬度
  • NSShadowAttributeName //陰影
寫了一個列子,先看一下效果圖37-1:


下面貼上程式碼:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor blackColor];

    //建立控制元件
    [self creatControl];
}

- (void)creatControl
{
    //初始化
    NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"既然選擇了遠方,便只顧風雨兼程"];
    
    //設定範圍
    NSRange range1 = NSMakeRange(5, 2);
    NSRange range2 = NSMakeRange(11, 4);
    
    //為某一範圍內文字設定多個屬性
    NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:
                           [UIColor yellowColor], NSForegroundColorAttributeName,
                           [UIFont systemFontOfSize:26.0f], NSFontAttributeName, nil];
    [str setAttributes:attrs range:range1];
    
    //文字顏色
    [str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range2];
    //文字大小
    [str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:26.0f] range:range2];
    
    //標題
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, [UIScreen mainScreen].bounds.size.width - 40, 30)];
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont systemFontOfSize:19.0f];
    label.attributedText = str;
    label.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:label];
}

@end