目錄:[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