1. 程式人生 > >富文字類NSAttributeString的使用詳解

富文字類NSAttributeString的使用詳解

標籤:

技術分享

以前看到這種字號和顏色不一樣的字串,想出個討巧的辦法就是“¥150”一個UILable,“元/位”一個UILable。今天翻看以前的工程,command點進UITextField中看到[attributedText]這個關鍵字,以前都沒注意過UITextField還有這個屬性,其實UITextView、UILable也有這個屬性,iOS6就已經有了,說來慚愧,對此罰站1秒鐘。

NSAttributedString叫做富文字,是一種帶有屬性的字串,通過它可以輕鬆的在一個字串中表現出多種字型、字號、字型大小等各不相同的風格,還可以對段落進行格式化。

通過以下程式碼即可實現上面圖示效果,十分方便,從此再也不用設定兩個UILable,並且處心積慮的處理它們的長度了。

 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     //富文字物件
 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”進行分段,此設定必須在lable.numberOfLines = 0時有效,value通過NSMutableParagraphStyle設定,它有以下屬性)

 [段落樣式-插曲]
1
@property(readwrite) CGFloat lineSpacing;              //行間距 2 @property(readwrite) CGFloat paragraphSpacing;           //段間距 3 @property(readwrite) NSTextAlignment alignment;           //對齊方式 4 @property(readwrite) CGFloat firstLineHeadIndent;          //首行縮緊 5 @property(readwrite) CGFloat headIndent;               //除首行之外其他行縮排 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;  //書寫方式(NSWritingDirectionNaturalNSWritingDirectionLeftToRightNSWritingDirectionRightToLeft
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;
技術分享

NSForegroundColorAttributeName    文字前景色

NSBackgroundColorAttributeName     文字背景色

NSLigatureAttributeName        連體字(NSNumber  @0:無連體,@1:預設連體,系統字型不包含對連體的支援)

NSUnderlineStyleAttributeName     下劃線

NSStrokeColorAttributeName       只有在NSStrokeWidthAttributeName設定了值之後才有效(預設字型顏色和前景色一致,如果設定的顏色和前景色不一致則前景色無效)

NSStrokeWidthAttributeName      設定該屬性之後字型變成空心字型,字型邊線寬度為value設定的值

NSBaselineOffsetAttributeName     值為NSNumber型別,表明文字相對於其他文字基準線向上的偏移量

NSUnderlineColorAttributeName      值為UIColor型別,下劃線顏色(只有在NSUnderlineStyleAttributeName的value為@1時有效)

NSUnderlineStyleAttributeName      值為NSNumber型別,下劃線寬度(預設值為@0:下劃線寬度為0——不現實下劃線,@1:字串有下劃線)

屬性挺多的,有其他需要的話command點進去看一下就ok,如果對他們的功能不瞭解三根指頭點一下關鍵詞,或者按住option點一下看看官方文件的Description相信就會有所瞭解了,其他的暫時就不介紹了。


相關推薦

文字NSAttributeString的使用

標籤: 以前看到這種字號和顏色不一樣的字串,想出個討巧的辦法就是“¥150”一個UILable,“元/位”一個UILable。今天翻看以前的工程,command點進UITextField中看到[attributedText]這個關鍵字,以前都沒注意過UITextF

iOS: 文字AttributedString的

AttributedString可以分為NSAttributedString和NSMutableAttributedString兩種,在使用中通過把AttributedString賦值給控制元件的attributedText屬性來新增文字樣式。具有該屬性的控制元

Buffer(轉)

iteye 原始數據類型 pub bst exception 如何 數字 硬件 final Buffer 類是 java.nio 的構造基礎。一個 Buffer 對象是固定數量的數據的容器,其作用是一個存儲器,或者分段運輸區,在這裏,數據可被存儲並在之後用於檢索。緩沖區可以

[轉]C#進階系列——WebApi 接口返回值不困惑:返回值

try 接口測試工具 des rep home creat port 調用 學習 本文轉自:http://www.cnblogs.com/landeanfen/p/5501487.html 閱讀目錄 一、void無返回值 二、IHttpActionResult

SQL數據庫數據

float ffffff 郵政編碼 詳解 fff 可變 new 另一個 val 數據類型 類型 描 述 bit 整型 bit 數據類型是整型,其值只能是0、1或空值。這種數據類型用於存儲只有兩種可能值的數據,如Yes 或No、True 或F

void

堅持 n) getch stand clu 內存 計時 dsi 也不能 轉載自http://blog.csdn.net/geekcome/article/details/6249151#t1 void的含義 void即“無類型”,void *則為“無類型指針”,可以指向任何

數據

date 指定 5.6 其中 大於 大小寫 oat 數據表 clas (1)整數型整數包括bigint、int、smallint和tinyint,從標識符的含義就可以看出,它們的表示數範圍逐漸縮小。lbigint:大整數,數範圍為-263(-9223372036854775

解析利用wsdl.exe生成webservice代理

不同 綁定 配置 img 請求 name cto lena 處理 利用wsdl.exe生成webservice代理類:根據提供的wsdl生成webservice代理類1、開始->程序->Visual Studio 2010 命令提示2、輸入如下紅色標記部分D:/

js變量

har () name def -type js對象 arr ray blog <html> <title>js變量類型詳解</title> <meta http-equiv="content-type" content="t

MySQL常用的幾個數據

mysql unsigned std 範圍 body object pan 字符串類型 mint 一、字符串類型 類型 範圍 說明 Char(N) [ binary] N=1~255 個字節binary :分辨大小寫 固定長度 std_name c

MySQL(二) 數據庫數據

直接 技術分享 空間 long 需求 mys tex png mms       序言          今天去健身了,感覺把身體練好還是不錯的,閑話不多說,把這個數據庫所遇到的數據類型今天統統在這裏講清楚了,以後在看到什麽數據類型,咱度應該認識,對我來說,最不熟悉的應該就

UML_關聯關系_多對多

col c++代碼 一個 image 技術 pub 每一個 push_back cnblogs 在關聯關系中,很多情況下我們的多重性並不是多對一或者一對多的,而是多對多的。 不過因為我們要考慮裏面的導航性,如果直接搞的話就是需要去維護兩群對象之間多對多的互指鏈接,這就

UML_聚合關系

聚合 分享 產生 .com 特殊 begin blank .html 表達 結合UML關系,以看臺和基金來介紹聚合關系 aggregation,是一種特殊的關聯關系,既有關聯關系的特質,還獨有“整體 —— 部分(whole &md

Java對象和

htc db2 ucs docs em1 mvp ini ndt ecs 琴7A0坎4純3硬si藕菜時http://docstore.docin.com/xpyd645 膊9強4埔cs黑依oehttp://www.docin.com/nir7778 R7E20wm8

3.8大基本數據

之前 高級 table 簡單 nal 引用變量 java引用類型 存取 new Java基本數據類型總結 基本類型,或者叫做內置類型,是JAVA中不同於類的特殊類型。它們是我們編程中使用最頻繁的類型。java是一種強類型語言,第一次申明變量必須說明數據類型,第一次變量賦值稱

Python數據

lan 數字 介紹 logs 人生 類型 html art python 人生苦短,我用Python,接下來我們開始數據類型的學習 當你覺得自己要放棄的時候,想想當初為什麽要學習python 一:python數據類型介紹 二:python數據類型之數字 三:python數據

Kotlin——最詳細的抽象(abstract)、內部類(嵌套

unit 建議 git 功能 pen 情況 master 這也 html 在前面幾個章節中,詳細的介紹了Kotlin類的類別中的數據類、密封類、接口類以及枚舉類。在這個章節中會對Koltin的抽象類和內部類作出一個詳細的講解。如果對上面所提到的類的類別還不是很清晰的,請閱

Linux文件

四種 普通 應用 rwx 快捷方式 mnt pip 文件類型 device 一、Linux文件類型分:普通文件、目錄文件、鏈接文件、設備文件、管道文件。 1、普通文件:由ls -al顯示屬性時,第一個屬性為 [-],例如 [-rwxrwxrwx]。包括:   1、純文本文

三:python 對象一:數字(上)

結果 dom 運行 精度 升級 方法 函數 般的 代碼 一:python 的數字類型: a)整數和浮點數 b)復數 c)固定精度的十進制數 d)有理分數 e)集合 f)布爾類型 g)無窮的整數精度 h)各種數字內置函數和模塊 二:各種數字類型的詳解   1,數字常量:pyt

linux初級學習筆記四:Linux文件管理命令!(視頻序號:03_1)

單詞 linux初級 linux文件管理 查看 stat 顯示行數 swd 字符處理 行數 本節學習的命令:cat(tac),more,less,head,tail,cut,sort,uniq,wc,tr 本節學習的技能:目錄管理         文件管理