NSAttributedString用法

標(biāo)簽:

技術(shù)分享

以前看到這種字號(hào)和顏色不一樣的字符串雁刷,想出個(gè)討巧的辦法就是“¥150”一個(gè)UILable桂对,“元/位”一個(gè)UILable媳纬。今天翻看以前的工程,command點(diǎn)進(jìn)UITextField中看到[attributedText]這個(gè)關(guān)鍵字杉适,以前都沒注意過UITextField還有這個(gè)屬性,其實(shí)UITextView柳击、UILable也有這個(gè)屬性猿推,iOS6就已經(jīng)有了,說來慚愧捌肴,對(duì)此罰站1秒鐘蹬叭。

NSAttributedString叫做富文本,是一種帶有屬性的字符串状知,通過它可以輕松的在一個(gè)字符串中表現(xiàn)出多種字體秽五、字號(hào)、字體大小等各不相同的風(fēng)格饥悴,還可以對(duì)段落進(jìn)行格式化坦喘。

通過以下代碼即可實(shí)現(xiàn)上面圖示效果,十分方便西设,從此再也不用設(shè)置兩個(gè)UILable瓣铣,并且處心積慮的處理它們的長(zhǎng)度了。

1? ? UILabel * aLable = [[UILabel alloc] initWithFrame:CGRectMake(100, 500, 200, 40)];

2? ? aLable.textAlignment = NSTextAlignmentCenter;

3? ? [self.view addSubview:aLable];

4

5? ? NSString * aString = @"¥150 元/位";

6

7? ? //富文本對(duì)象

8? ? NSMutableAttributedString * aAttributedString = [[NSMutableAttributedString alloc] initWithString:aString];

9

10? ? //富文本樣式

11? ? [aAttributedString addAttribute:NSForegroundColorAttributeName? //文字顏色

12? ? ? ? ? ? ? ? ? ? ? ? ? ? ? value:[UIColor redColor]

13? ? ? ? ? ? ? ? ? ? ? ? ? ? ? range:NSMakeRange(0, 4)];

14

15? ? [aAttributedString addAttribute:NSFontAttributeName? ? ? ? ? ? //文字字體

16? ? ? ? ? ? ? ? ? ? ? ? ? ? ? value:[UIFont systemFontOfSize:25]

17? ? ? ? ? ? ? ? ? ? ? ? ? ? ? range:NSMakeRange(0, 4)];

18

19? ? aLable.attributedText = aAttributedString;

常用屬性:

NSFontAttributeName           文字字體

NSParagraphStyleAttributeName     段落樣式(字符串通過“\n”進(jìn)行分段贷揽,此設(shè)置必須在lable.numberOfLines = 0時(shí)有效棠笑,value通過NSMutableParagraphStyle設(shè)置,它有以下屬性)

[段落樣式-插曲]

1 @property(readwrite) CGFloat lineSpacing;              //行間距

2 @property(readwrite) CGFloat paragraphSpacing;           //段間距

3 @property(readwrite) NSTextAlignment alignment;           //對(duì)齊方式

4 @property(readwrite) CGFloat firstLineHeadIndent;          //首行縮緊

5 @property(readwrite) CGFloat headIndent;               //除首行之外其他行縮進(jìn)

6 @property(readwrite) CGFloat tailIndent;               //每行容納字符的寬度

7 @property(readwrite) NSLineBreakMode lineBreakMode;       ? //換行方式

8 @property(readwrite) CGFloat minimumLineHeight;           //最小行高

9 @property(readwrite) CGFloat maximumLineHeight;           //最大行高

10 @property(readwrite) NSWritingDirection baseWritingDirection;  //書寫方式(NSWritingDirectionNatural禽绪,NSWritingDirectionLeftToRight蓖救,NSWritingDirectionRightToLeft)

11 @property(readwrite) CGFloat lineHeightMultiple;

12 @property(readwrite) CGFloat paragraphSpacingBefore;

13 @property(readwrite) float hyphenationFactor;

14 @property(readwrite,copy,NS_NONATOMIC_IOSONLY) NSArray *tabStops NS_AVAILABLE_IOS(7_0);

15 @property(readwrite,NS_NONATOMIC_IOSONLY) CGFloat defaultTabInterval NS_AVAILABLE_IOS(7_0);

[段落樣式demo]

1? ? UILabel * lable = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, self.view.frame.size.width-100, 200)];

2? ? lable.backgroundColor = [UIColor lightGrayColor];

3? ? lable.numberOfLines = 0;

4? ? [self.view addSubview:lable];

5

6? ? NSString * string = @"Always believe that something wonderful is about \nto happen!";

7

8? ? //富文本

9? ? NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:string];

10

11? ? //段落樣式

12? ? NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];

13

14 #warning? lable.numberOfLines必須為0丐一,段落樣式才生效

15? ? //行間距

16? ? paragraphStyle.lineSpacing = 10.0;

17? ? //段落間距

18? ? paragraphStyle.paragraphSpacing = 20.0;

19

20 //? ? paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight;

21 //? ? paragraphStyle.firstLineHeadIndent = 10.0;

22 //? ? paragraphStyle.headIndent = 50.0;

23 //? ? paragraphStyle.tailIndent = 200.0;

24

25? ? [attributedString addAttribute:NSParagraphStyleAttributeName

26? ? ? ? ? ? ? ? ? ? ? ? ? ? ? value:paragraphStyle

27? ? ? ? ? ? ? ? ? ? ? ? ? ? ? range:NSMakeRange(0, string.length)];

28

29? ? lable.attributedText = attributedString;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藻糖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子库车,更是在濱河造成了極大的恐慌巨柒,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柠衍,死亡現(xiàn)場(chǎng)離奇詭異洋满,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)珍坊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門牺勾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阵漏,你說我怎么就攤上這事驻民》撸” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵回还,是天一觀的道長(zhǎng)裆泳。 經(jīng)常有香客問我,道長(zhǎng)柠硕,這世上最難降的妖魔是什么工禾? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蝗柔,結(jié)果婚禮上闻葵,老公的妹妹穿的比我還像新娘。我一直安慰自己癣丧,他們只是感情好槽畔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坎缭,像睡著了一般竟痰。 火紅的嫁衣襯著肌膚如雪签钩。 梳的紋絲不亂的頭發(fā)上掏呼,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音铅檩,去河邊找鬼憎夷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昧旨,可吹牛的內(nèi)容都是我干的拾给。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼兔沃,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蒋得!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乒疏,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤额衙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后怕吴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窍侧,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年转绷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伟件。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡议经,死狀恐怖斧账,靈堂內(nèi)的尸體忽然破棺而出谴返,到底是詐尸還是另有隱情,我是刑警寧澤咧织,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布亏镰,位于F島的核電站,受9級(jí)特大地震影響拯爽,放射性物質(zhì)發(fā)生泄漏索抓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一毯炮、第九天 我趴在偏房一處隱蔽的房頂上張望逼肯。 院中可真熱鬧,春花似錦桃煎、人聲如沸篮幢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)三椿。三九已至,卻和暖如春葫辐,著一層夾襖步出監(jiān)牢的瞬間搜锰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工耿战, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛋叼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓剂陡,卻偏偏與公主長(zhǎng)得像狈涮,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸭栖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容