@在iOS6之前需要使用NSMutableAttributedString時都需要導入:CoreText.framework框架的,但在iOS6 之後就不在需要了.
- - (void)testOfNSMutableAttributedStringAndNSAttributedString
- {
- /**
- * - (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
- * 主要方法
- * name 屬性名
- * value 屬性對應效果的值
- * range 效果所映射的範圍
- */
- #pragma mark 測試數據0
- NSString *testString = @"NSMutableAttributed---0";
- UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(60, 100, 200, 40)];
- NSMutableAttributedString * testAttriString = [[NSMutableAttributedString alloc] initWithString:testString];
- // 添加刪除線
- [testAttriString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(0, testAttriString.length)];
- // 添加下劃線
- [testAttriString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(0, testAttriString.length)];
- // 設置文本的字體以及大小
- [testAttriString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica-Bold" size:15] range:NSMakeRange(0, testAttriString.length)];
- // 設置筆畫的粗細
- [testAttriString addAttribute:NSStrokeWidthAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleDouble] range:NSMakeRange(0, testAttriString.length)];
- // label的背景顏色
- [testAttriString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(0, testAttriString.length)];
- // 目前沒測出什麼效果.....
- [testAttriString addAttribute:NSVerticalGlyphFormAttributeName value:[NSNumber numberWithInt:1] range:NSMakeRange(0, testAttriString.length)];
- // label上文本顏色(也會影響刪除線和下劃線的顏色)
- [testAttriString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, testAttriString.length)];
- testLabel.attributedText = testAttriString;
- #pragma mark 測試數據1
- NSString *testString1 = @"NSMutableAttributed---1";
- UILabel *testLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(60, 200, 200, 40)];
- NSMutableAttributedString * testAttriString1 = [[NSMutableAttributedString alloc] initWithString:testString1];
- // 實現文本內容顏色和下劃線,刪除線的顏色不一樣
- // NSStrokeColorAttributeName 單獨設置沒有效果
- // 必須與NSStrokeWidthAttributeName一起設置
- [testAttriString1 addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(0, testAttriString1.length)];
- [testAttriString1 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, testAttriString1.length)];
- [testAttriString1 addAttribute:NSStrokeColorAttributeName value:[UIColor cyanColor] range:NSMakeRange(0, testAttriString1.length)];
- [testAttriString1 addAttribute:NSStrokeWidthAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleDouble] range:NSMakeRange(0, testAttriString1.length)];
- testLabel1.attributedText = testAttriString1;
- #pragma mark 測試數據2
- NSString *testString2 = @"NSMutableAttributed---2";
- UILabel *testLabel2= [[UILabel alloc] initWithFrame:CGRectMake(60, 300, 200, 40)];
- NSMutableAttributedString * testAttriString2 = [[NSMutableAttributedString alloc] initWithString:testString2];
- // 筆畫的陰影效果
- NSShadow *shadow = [[NSShadow alloc] init];
- [shadow setShadowColor:[UIColor colorWithRed:0.053 green:0.088 blue:0.205 alpha:1.000]];
- [shadow setShadowBlurRadius:4.0];
- [shadow setShadowOffset:CGSizeMake(2, 2)];
- [testAttriString2 addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(0, [testAttriString2 length])];
- testLabel2.backgroundColor = [UIColor clearColor];
- testLabel2.attributedText = testAttriString2;
- [self.view addSubview:testLabel];
- [self.view addSubview:testLabel1];
- [self.view addSubview:testLabel2];
- }
- 使用AttributedString的方式通常有兩種:
- 方式一:
- 首先初始化一個NSMutableAttributedString,然後向裏面添加文字樣式,最後將它賦給控件的AttributedText,該方法適合於文本較少而又需要分段精細控制的情況。
- NSString *originStr = @"Hello,中秋節!";
- //方式一
- //創建 NSMutableAttributedString
- NSMutableAttributedString *attributedStr01 = [[NSMutableAttributedString alloc] initWithString: originStr];
- //添加屬性
- //給所有字符設置字體爲Zapfino,字體高度爲15像素
- [attributedStr01 addAttribute: NSFontAttributeName value: [UIFont fontWithName: @"Zapfino" size: 15]
- range: NSMakeRange(0, originStr.length)];
- //分段控制,最開始4個字符顏色設置成藍色
- [attributedStr01 addAttribute: NSForegroundColorAttributeName value: [UIColor blueColor] range: NSMakeRange(0, 4)];
- //分段控制,第5個字符開始的3個字符,即第5、6、7字符設置爲紅色
- [attributedStr01 addAttribute: NSForegroundColorAttributeName value: [UIColor redColor] range: NSMakeRange(4, 3)];
- //賦值給顯示控件label01的 attributedText
- _label01.attributedText = attributedStr01;
- 方式二:
- 首先創建屬性字典,初始化各種屬性,然後和需要控制的文本一起創建並賦值給控件的AttributedText,該方法適合於需要控制的文本較多整體控制的情況,通常是從文件中讀取的大段文本控制。
- //方式二
- //創建屬性字典
- NSDictionary *attrDict = @{ NSFontAttributeName: [UIFont fontWithName: @"Zapfino" size: 15],
- NSForegroundColorAttributeName: [UIColor blueColor] };
- //創建 NSAttributedString 並賦值
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict];
- 通過對比兩個例子可以看出,方式一比較容易處理複雜的格式,但是屬性設置比較繁多複雜,而方式二的屬性設置比較簡單明瞭,卻不善於處理複雜多樣的格式控制,但是不善於並不等於不能,可以通過屬性字符串分段的方式來達到方式一的效果,如下:
- //方式二的分段處理
- //第一段
- NSDictionary *attrDict1 = @{ NSFontAttributeName: [UIFont fontWithName: @"Zapfino" size: 15],
- NSForegroundColorAttributeName: [UIColor blueColor] };
- NSAttributedString *attrStr1 = [[NSAttributedString alloc] initWithString: [originStr substringWithRange: NSMakeRange(0, 4)] attributes: attrDict1];
- //第二段
- NSDictionary *attrDict2 = @{ NSFontAttributeName: [UIFont fontWithName: @"Zapfino" size: 15],
- NSForegroundColorAttributeName: [UIColor redColor] };
- NSAttributedString *attrStr2 = [[NSAttributedString alloc] initWithString: [originStr substringWithRange: NSMakeRange(4, 3)] attributes: attrDict2];
- //第三段
- NSDictionary *attrDict3 = @{ NSFontAttributeName: [UIFont fontWithName: @"Zapfino" size: 15],
- NSForegroundColorAttributeName: [UIColor blackColor] };
- NSAttributedString *attrStr3 = [[NSAttributedString alloc] initWithString: [originStr substringWithRange:
- NSMakeRange(7, originStr.length - 4 - 3)] attributes: attrDict3];
- //合併
- NSMutableAttributedString *attributedStr03 = [[NSMutableAttributedString alloc] initWithAttributedString: attrStr1];
- [attributedStr03 appendAttributedString: attrStr2];
- [attributedStr03 appendAttributedString: attrStr3];
- _label03.attributedText = attributedStr03;
- @AttributedString究竟可以設置哪些屬性,具體來說,有以下21個:
- // NSFontAttributeName 設置字體屬性,默認值:字體:Helvetica(Neue) 字號:12
- // NSForegroundColorAttributeNam 設置字體顏色,取值爲 UIColor對象,默認值爲黑色
- // NSBackgroundColorAttributeName 設置字體所在區域背景顏色,取值爲 UIColor對象,默認值爲nil, 透明色
- // NSLigatureAttributeName 設置連體屬性,取值爲NSNumber 對象(整數),0 表示沒有連體字符,1 表示使用默認的連體字符
- // NSKernAttributeName 設定字符間距,取值爲 NSNumber 對象(整數),正值間距加寬,負值間距變窄
- // NSStrikethroughStyleAttributeName 設置刪除線,取值爲 NSNumber 對象(整數)
- // NSStrikethroughColorAttributeName 設置刪除線顏色,取值爲 UIColor 對象,默認值爲黑色
- // NSUnderlineStyleAttributeName 設置下劃線,取值爲 NSNumber 對象(整數),枚舉常量 NSUnderlineStyle中的值,與刪除線類似
- // NSUnderlineColorAttributeName 設置下劃線顏色,取值爲 UIColor 對象,默認值爲黑色
- // NSStrokeWidthAttributeName 設置筆畫寬度,取值爲 NSNumber 對象(整數),負值填充效果,正值中空效果
- // NSStrokeColorAttributeName 填充部分顏色,不是字體顏色,取值爲 UIColor 對象
- // NSShadowAttributeName 設置陰影屬性,取值爲 NSShadow 對象
- // NSTextEffectAttributeName 設置文本特殊效果,取值爲 NSString 對象,目前只有圖版印刷效果可用:
- // NSBaselineOffsetAttributeName 設置基線偏移值,取值爲 NSNumber (float),正值上偏,負值下偏
- // NSObliquenessAttributeName 設置字形傾斜度,取值爲 NSNumber (float),正值右傾,負值左傾
- // NSExpansionAttributeName 設置文本橫向拉伸屬性,取值爲 NSNumber (float),正值橫向拉伸文本,負值橫向壓縮文本
- // NSWritingDirectionAttributeName 設置文字書寫方向,從左向右書寫或者從右向左書寫
- // NSVerticalGlyphFormAttributeName 設置文字排版方向,取值爲 NSNumber 對象(整數),0 表示橫排文本,1 表示豎排文本
- // NSLinkAttributeName 設置鏈接屬性,點擊後調用瀏覽器打開指定URL地址
- // NSAttachmentAttributeName 設置文本附件,取值爲NSTextAttachment對象,常用於文字圖片混排
- // NSParagraphStyleAttributeName 設置文本段落排版格式,取值爲 NSParagraphStyle 對象
- 下面就一一舉例說明:
- 1. NSFontAttributeName
- //NSForegroundColorAttributeName 設置字體顏色,取值爲 UIColor,默認爲黑色
- NSDictionary *attrDict1 = @{ NSForegroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict2 = @{ NSForegroundColorAttributeName: [UIColor blueColor] };
- NSDictionary *attrDict3 = @{ NSForegroundColorAttributeName: [UIColor orangeColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 注意:
- NSForegroundColorAttributeName設置的顏色與UILabel的textColor屬性設置的顏色在地位上是相等的,誰最後賦值,最終顯示的就是誰的顏色。
- 2. NSBackgroundColorAttributeName
- //NSForegroundColorAttributeName 設置字體顏色,取值爲 UIColor,默認爲黑色
- NSDictionary *attrDict1 = @{ NSForegroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict2 = @{ NSForegroundColorAttributeName: [UIColor blueColor] };
- NSDictionary *attrDict3 = @{ NSForegroundColorAttributeName: [UIColor orangeColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- //NSBackgroundColorAttributeName 設置字體所在區域背景的顏色,取值爲UIColor,默認值爲nil
- NSDictionary *attrDict4 = @{ NSBackgroundColorAttributeName: [UIColor orangeColor] };
- NSDictionary *attrDict5 = @{ NSBackgroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict6 = @{ NSBackgroundColorAttributeName: [UIColor cyanColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict4];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict5];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict6];
- 仔細觀察會發現個問題,我並沒有關閉 NSForegroundColorAttributeName 屬性,但是在運行結果中,所有字體的顏色都變成了默認色——黑色,這說明 NSForegroundColorAttributeName 和 NSBackgroundColorAttributeName 的低位是相等的,跟前面介紹的 textColor 一樣,哪個屬性最後一次賦值,就會沖掉前面的效果,若是我們把屬性代碼順序交換一下
- //NSBackgroundColorAttributeName 設置字體所在區域背景的顏色,取值爲UIColor,默認值爲nil
- NSDictionary *attrDict4 = @{ NSBackgroundColorAttributeName: [UIColor orangeColor] };
- NSDictionary *attrDict5 = @{ NSBackgroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict6 = @{ NSBackgroundColorAttributeName: [UIColor cyanColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict4];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict5];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict6];
- //NSForegroundColorAttributeName 設置字體顏色,取值爲 UIColor,默認爲黑色
- NSDictionary *attrDict1 = @{ NSForegroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict2 = @{ NSForegroundColorAttributeName: [UIColor blueColor] };
- NSDictionary *attrDict3 = @{ NSForegroundColorAttributeName: [UIColor orangeColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 但是textColor屬性可以與 NSBackgroundColorAttributeName 屬性疊加
- _label01.textColor = [UIColor greenColor];
- _label02.textColor = [UIColor yellowColor];
- _label03.textColor = [UIColor blueColor];
- //NSForegroundColorAttributeName 設置字體顏色,取值爲 UIColor,默認爲黑色
- NSDictionary *attrDict1 = @{ NSForegroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict2 = @{ NSForegroundColorAttributeName: [UIColor blueColor] };
- NSDictionary *attrDict3 = @{ NSForegroundColorAttributeName: [UIColor orangeColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- //NSBackgroundColorAttributeName 設置字體所在區域背景的顏色,取值爲UIColor,默認值爲nil
- NSDictionary *attrDict4 = @{ NSBackgroundColorAttributeName: [UIColor orangeColor] };
- NSDictionary *attrDict5 = @{ NSBackgroundColorAttributeName: [UIColor redColor] };
- NSDictionary *attrDict6 = @{ NSBackgroundColorAttributeName: [UIColor cyanColor] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict4];
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict5];
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict6];
- 雖然 textColor 在 NSFontAttributeName 之前賦值,但是由於 NSFontAttributeName 的屬性效果被NSBackgroundColorAttributeName 屬性沖掉了,所以最終顯示了 textColor 的顏色。
- 3. NSLigatureAttributeName
- //NSLigatureAttributeName 設置連體屬性,取值爲NSNumber 對象(整數),0 表示沒有連體字符,1 表示使用默認的連體字符,
- // 2 表示使用所有連體符號,默認值爲 1(iOS 不支持 2)
- NSString *ligatureStr = @"flush";
- NSDictionary *attrDict1 = @{ NSLigatureAttributeName: [NSNumber numberWithInt: 0],
- NSFontAttributeName: [UIFont fontWithName: @"futura" size: 30] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: ligatureStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSLigatureAttributeName: @(1),
- NSFontAttributeName: [UIFont fontWithName: @"futura" size: 30]
- };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: ligatureStr attributes: attrDict2];
- 由於要展示連體字符,所以將前面使用的帶有中文的字符串換成 flush
- NSLigatureAttributeName的取值爲NSNumber對象,所以不能直接將一個整數值賦給它,創建 NSNumber 對象的方法有很多,或者可以簡寫成 @(int)
- 注意觀察字母f和l之間的變化。
- 感覺連寫就是一個藝術字功能,當字符f和l組合使用組合符號(所謂的字形(glyph))繪製時,看起來確實更加美觀。但是並非所有的字符之間都有組合符號,事實上,只有某些字體中得某些字符的組合(如字符f和l,字符f和i等)才具有美觀的組合符號。
- 4. NSKernAttributeName
- //NSKernAttributeName 設定字符間距,取值爲 NSNumber 對象(整數),正值間距加寬,負值間距變窄
- NSDictionary *attrDict1 = @{ NSKernAttributeName: @(-3),
- NSFontAttributeName: [UIFont systemFontOfSize: 20]
- };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSKernAttributeName: @(0),
- NSFontAttributeName: [UIFont systemFontOfSize: 20]
- };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSKernAttributeName: @(10),
- NSFontAttributeName: [UIFont systemFontOfSize: 20]
- };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 5. NSStrikethroughStyleAttributeName
- //NSStrikethroughStyleAttributeName 設置刪除線,取值爲 NSNumber 對象(整數),枚舉常量 NSUnderlineStyle中的值
- // NSUnderlineStyleNone 不設置刪除線
- // NSUnderlineStyleSingle 設置刪除線爲細單實線
- // NSUnderlineStyleThick 設置刪除線爲粗單實線
- // NSUnderlineStyleDouble 設置刪除線爲細雙實線
- NSDictionary *attrDict1 = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleSingle),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleThick),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleDouble),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 注意:
- 雖然使用了枚舉常量,但是枚舉常量的本質仍爲整數,所以同樣必須先轉化爲 NSNumber 才能使用
- 刪除線和下劃線使用相同的枚舉常量作爲其屬性值
- 目前iOS中只有上面列出的4中效果,雖然我們能夠在頭文件中發現其他更多的取值,但是使用後沒有任何效果
- 可以看出,中文和英文刪除線的位置有所不同
- 另外,刪除線屬性取值除了上面的4種外,其實還可以取其他整數值,有興趣的可以自行試驗,取值爲 0 - 7時,效果爲單實線,隨着值得增加,單實線逐漸變粗,取值爲 9 - 15時,效果爲雙實線,取值越大,雙實線越粗。
- NSDictionary *attrDict1 = @{ NSStrikethroughStyleAttributeName: @(1),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSStrikethroughStyleAttributeName: @(3),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSStrikethroughStyleAttributeName: @(7),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 6. NSStrikethroughColorAttributeName
- //NSStrikethroughColorAttributeName 設置刪除線顏色,取值爲 UIColor 對象,默認值爲黑色
- NSDictionary *attrDict1 = @{ NSStrikethroughColorAttributeName: [UIColor blueColor],
- NSStrikethroughStyleAttributeName: @(1),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSStrikethroughColorAttributeName: [UIColor orangeColor],
- NSStrikethroughStyleAttributeName: @(3),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSStrikethroughColorAttributeName: [UIColor greenColor],
- NSStrikethroughStyleAttributeName: @(7),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 7. NSUnderlineStyleAttributeName
- 下劃線除了線條位置和刪除線不同外,其他的都可以完全參照刪除線設置。
- //NSUnderlineStyleAttributeName 設置下劃線,取值爲 NSNumber 對象(整數),枚舉常量 NSUnderlineStyle中的值,與刪除線類似
- NSDictionary *attrDict1 = @{ NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSUnderlineStyleAttributeName: @(NSUnderlineStyleThick),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSUnderlineStyleAttributeName: @(NSUnderlineStyleDouble),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 8. NSUnderlineColorAttributeName
- 可以完全參照下劃線顏色設置
- //NSUnderlineColorAttributeName 設置下劃線顏色,取值爲 UIColor 對象,默認值爲黑色
- NSDictionary *attrDict1 = @{ NSUnderlineColorAttributeName: [UIColor blueColor],
- NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSUnderlineColorAttributeName: [UIColor orangeColor],
- NSUnderlineStyleAttributeName: @(NSUnderlineStyleThick),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSUnderlineColorAttributeName: [UIColor greenColor],
- NSUnderlineStyleAttributeName: @(NSUnderlineStyleDouble),
- NSFontAttributeName: [UIFont systemFontOfSize:20] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 9. NSStrokeWidthAttributeName
- //NSStrokeWidthAttributeName 設置筆畫寬度,取值爲 NSNumber 對象(整數),負值填充效果,正值中空效果
- NSDictionary *attrDict1 = @{ NSStrokeWidthAttributeName: @(-3),
- NSFontAttributeName: [UIFont systemFontOfSize:30] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSStrokeWidthAttributeName: @(0),
- NSFontAttributeName: [UIFont systemFontOfSize:30] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSStrokeWidthAttributeName: @(3),
- NSFontAttributeName: [UIFont systemFontOfSize:30] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];
- 10. NSStrokeColorAttributeName
- //NSStrokeColorAttributeName 填充部分顏色,不是字體顏色,取值爲 UIColor 對象
- NSDictionary *attrDict1 = @{ NSStrokeWidthAttributeName: @(-3),
- NSStrokeColorAttributeName: [UIColor orangeColor],
- NSFontAttributeName: [UIFont systemFontOfSize:30] };
- _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
- NSDictionary *attrDict2 = @{ NSStrokeWidthAttributeName: @(0),
- NSStrokeColorAttributeName: [UIColor blueColor],
- NSFontAttributeName: [UIFont systemFontOfSize:30] };
- _label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];
- NSDictionary *attrDict3 = @{ NSStrokeWidthAttributeName: @(3),
- NSStrokeColorAttributeName: [UIColor greenColor],
- NSFontAttributeName: [UIFont systemFontOfSize:30] };
- _label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];