NSAttributedString是一種帶有屬性的字符串,通過該類我們可以靈活操作和呈現多種樣式的文字數據,常用語文字排版和圖文混排。
NSAttributedString和NSMutableAttributedString類似NSArray和NSMutableArray,NSAttributedString創建成功後的屬性是不可變的,而NSMutableAttributedString創建成功後的屬性是可變的。
NSAttributedString共有21個屬性:
1.NSFontAttributeName // 設置字體屬性,默認是 Helvetica(Neue) 12
2.NSParagraphStyleAttributeName // 設置文本段落排版格式 默認是NSParagraphStyle對象([NSParagraphStyle defaultParagraphStyle]);
3.NSForegroundColorAttributeName // 設置文本顏色,默認是黑色
4.NSBackgroundColorAttributeName // 設置字體背景色,默認是沒有顏色
5.NSLigatureAttributeName //設置連體屬性,取值爲NSNumber ,默認是1,表示使用默認的連體字符,0是沒有連體字符
6.NSKernAttributeName //設置字符間距,取值爲NSNumber,正值間距加寬,負值間距變窄
7.NSStrikethroughStyleAttributeName //設置刪除線,取值爲NSNumber
8.NSUnderlineStyleAttributeName // 設置下劃線,取值爲NSNumber
9.NSStrokeColorAttributeName //設置筆畫顏色,取值是UIColor
10.NSStrokeWidthAttributeName //設置筆畫寬度(粗細),取值爲 NSNumber,負值填充效果,正值中空效果
11.NSShadowAttributeName //設置陰影屬性,取值爲 NSShadow
12.NSTextEffectAttributeName //設置文本特殊效果,取值爲 NSString
13.NSAttachmentAttributeName //設置文本附件,取值爲NSTextAttachment,常用於文字圖片混排
14.NSLinkAttributeName //設置鏈接屬性,點擊後調用瀏覽器打開指定URL地址
15.NSBaselineOffsetAttributeName //設置基線偏移值,取值爲 NSNumber (float),正值上偏,負值下偏
16.NSUnderlineColorAttributeName //設置下劃線顏色,取值爲 UIColor 對象,默認值爲黑色
17.NSStrikethroughColorAttributeName //設置刪除線顏色,取值爲 UIColor 對象,默認值爲黑色
18.NSObliquenessAttributeName //設置字形傾斜度,取值爲 NSNumber (float),正值右傾,負值左傾
19.NSExpansionAttributeName //設置文本橫向拉伸屬性,取值爲 NSNumber (float),正值橫向拉伸文本,負值橫向壓縮文
20.NSWritingDirectionAttributeName //設置文字書寫方向,從左向右書寫或者從右向左書寫 ,取值:LRE, RLE, LRO, and RLO,可見API
21.NSVerticalGlyphFormAttributeName //設置文字排版方向,取值爲 NSNumber 對象(整數),0 表示橫排文本,1 表示豎排文本
//
// ViewController.m
// NSAttributedStringDemo
//
// Created by york on 16/4/11.
// Copyright © 2016年 裴楊威. All rights reserved.
//
#define DEVICE_HEIGHT [UIScreen mainScreen].bounds.size.height
#define DEVICE_WIDTH [UIScreen mainScreen].bounds.size.width
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,strong)UILabel *showLabel;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *str = @"CSDNhttp://www.csdn.net(隸屬北京創新樂知信息技術有限公司)創立於1999年,是中國最大的IT社區和服務平臺,爲中國的軟件開發者和IT從業者提供知識傳播、職業發展、軟件開發等全生命週期服務,滿足他們在職業發展中學習及共享知識和信息、建立職業發展社交圈、通過軟件開發實現技術商業化等剛性需求。擁有超過3000萬註冊會員(其中活躍會員800萬)、50萬註冊企業及合作伙伴。";
NSAttributedString *astr = [[NSAttributedString alloc] initWithString:str];
NSMutableAttributedString *attributStr = [[NSMutableAttributedString alloc] initWithAttributedString:astr];
//屬性1,設置字體屬性,示例:
[attributStr addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"ArialRoundedMTBold" size:24.0f] range:NSMakeRange(0, 4)];
//屬性2,設置文本段落排版格式,示例:
//屬性3,設置文本顏色,示例:
[attributStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(7, 14)];
//屬性4,設置字體背景色,示例:
[attributStr addAttribute:NSBackgroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(25, 4)];
//屬性5,設置連體屬性,示例:*
[attributStr addAttribute:NSLigatureAttributeName value:[NSNumber numberWithInt:1] range:NSMakeRange(attributStr.length-2, 2)];
//屬性6,設置字符間距,示例:
[attributStr addAttribute:NSKernAttributeName value:[NSNumber numberWithInt:10] range:NSMakeRange(0, 4)];
//屬性7,設置刪除線,示例:
[attributStr addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange(147, 4)];
//屬性8,設置下劃線,示例:
[attributStr addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange(157, 4)];
//屬性9,設置筆畫顏色,示例:*
[attributStr addAttribute:NSStrokeColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(80, 10)];
//屬性10,設置筆畫寬度(粗細),示例:
[attributStr addAttribute:NSStrokeWidthAttributeName value:[NSNumber numberWithInt:-5] range:NSMakeRange(100, 4)];
//屬性11,設置陰影屬性,示例:
// NSShadow 共有3個屬性:陰影顏色,模糊半徑和偏移
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowOffset = CGSizeMake(3, 3);
shadow.shadowBlurRadius = 0.5;
shadow.shadowColor = [UIColor grayColor]; //陰影顏色
[attributStr addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(110, 4)];
//屬性12,設置文本特殊效果,示例:
[attributStr addAttribute:NSTextEffectAttributeName value:NSTextEffectLetterpressStyle range:NSMakeRange(120, 4)];
//屬性14,設置鏈接屬性,示例:
[attributStr addAttribute:NSLinkAttributeName value:[NSURL URLWithString:[str substringWithRange:NSMakeRange(4, 19)]] range:NSMakeRange(4, 19)];
//屬性15,設置基線偏移值,示例:
[attributStr addAttribute:NSBaselineOffsetAttributeName value:[NSNumber numberWithInt:10] range:NSMakeRange(str.length-10, 10)];
//屬性16,設置下劃線顏色,示例:
[attributStr addAttribute:NSStrikethroughColorAttributeName value:[UIColor redColor] range:NSMakeRange(147, 4)];
//屬性17,設置刪除線顏色,示例:
[attributStr addAttribute:NSUnderlineColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(157, 4)];
//屬性18,設置字形傾斜度,示例:
[attributStr addAttribute:NSObliquenessAttributeName value:@0.5 range:NSMakeRange(133, 10)];
//屬性19,設置文本橫向拉伸屬性,示例:
[attributStr addAttribute:NSExpansionAttributeName value:@0.5 range:NSMakeRange(123, 10)];
//屬性20,設置文字書寫方向,示例:
[attributStr addAttribute:NSWritingDirectionAttributeName value:@[@(NSWritingDirectionLeftToRight)] range:NSMakeRange(str.length-10, 10)];
//屬性21,設置文字排版方向,示例:
[attributStr addAttribute:NSVerticalGlyphFormAttributeName value:@0 range:NSMakeRange(0, str.length)];
self.showLabel.attributedText = attributStr;
}
- (UILabel *)showLabel
{
if (!_showLabel) {
_showLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, DEVICE_WIDTH, DEVICE_HEIGHT-200)];
_showLabel.layer.borderWidth = 1;
_showLabel.numberOfLines = 0;
_showLabel.layer.borderColor = [UIColor grayColor].CGColor;
_showLabel.userInteractionEnabled = YES;
[self.view addSubview:_showLabel];
}
return _showLabel;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
如果需要的話,也可以通過NSDictionary來先設置需要的屬性,然後使用NSAttributedString的- (instancetype)initWithString:(NSString *)str attributes:(nullable NSDictionary<NSString *, id> *)attrs方法來設置。