[Xcode 實際操做]9、實用進階-(14)使用富文本CoreText框架建立豐富多彩的文本

目錄:[Swift]Xcode實際操做html

本文將演示如何使用富文本CoreText框架建立豐富多彩的文本圖形。swift

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】數組

 1 import UIKit
 2 //導入須要用到的富文本CoreText框架
 3 import CoreText
 4 
 5 class ViewController: UIViewController {
 6 
 7     override func viewDidLoad() {
 8         super.viewDidLoad()
 9         // Do any additional setup after loading the view, typically from a nib.
10         
11         //初始化一個標籤對象,並設置其位置在(10,60),尺寸爲(300,40)。
12         let label = UILabel(frame: CGRect(x: 10, y: 60, width: 300, height: 40))
13         //建立一個字體對象,並設置其字體和大小
14         let font = CTFontCreateWithName(("ArailMT" as CFString?)!, 32, nil)
15         
16         //建立一個可變屬性字符串,能夠對屬性字符串,同時添加多個樣式屬性
17         let string = NSMutableAttributedString(string: "My name is strengthen!")
18         //給字符串開始位置以後的11個字符,設置自定義的字體樣式
19         string.addAttribute(kCTFontAttributeName as NSAttributedString.Key,
20          value: font, 
21          range: NSRange(location: 0, length: 11))
22         
23         //給字符串開始位置以後的11個字符,設置文字爲紅色
24         string.addAttribute(kCTForegroundColorAttributeName as NSAttributedString.Key,
25          value: UIColor.red,
26          range: NSRange(location: 0, length: 11))
27         
28         //建立一個數字變量
29         var number = 3
30         //將數字轉換爲CF數字類型。
31         let cfNumber = CFNumberCreate(kCFAllocatorDefault, CFNumberType.sInt8Type, &number)
32         //而後對第12個字符以後的9個字符,進行寬度爲3的描邊處理。
33         string.addAttribute(kCTStrokeWidthAttributeName as NSAttributedString.Key, 
34          value: cfNumber!, 
35          range: NSMakeRange(12, 9))
36         
37         //初始化一個大小爲14的斜體字體
38         let italicFont = UIFont.italicSystemFont(ofSize: 14)
39         //將字體對象轉換爲CTFont類型。
40         let fontValue = CTFontCreateWithName(italicFont.fontName as CFString, 14, nil)
41         //將第22個字符以後的3個字符,設置大小爲14的斜體字符
42         string.addAttribute(kCTFontAttributeName as NSAttributedString.Key, 
43          value: fontValue, 
44          range: NSRange(location: 22, length: 3))
45         
46         //將第26個字符以後的5個字符,添加寬度爲1的下劃線
47         string.addAttribute(kCTUnderlineStyleAttributeName as NSAttributedString.Key,
48          value: NSNumber(value: 1),
49          range: NSRange(location: 26, length: 5))
50         
51         //將可變屬性字符串,賦予標籤對象的屬性文本屬性
52         label.attributedText = string
53         self.view.addSubview(label)
54     }
55     
56     override func didReceiveMemoryWarning() {
57         super.didReceiveMemoryWarning()
58         // Dispose of any resources that can be recreated.
59     }
60 }

CFIndex:typedef signed long CFIndex框架

在Core Foundation框架中通常用於數組的序號和參數返回值的大小,計數等。ide

Core Foundation中CFIndex的位長隨着處理器的位長而增長。post

如64位機器中CFIndex可能就爲64位,而和int的位長無關。字體

因此在與Core Foundation的交互中,使用CFIndex將有很好的可移植性,建議使用。spa

相關文章
相關標籤/搜索