★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-fxitqjfb-mc.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftgit
本文將演示對長文本進行分欄顯示。往項目中導入一份文本文件。github
在左側的項目導航區,打開視圖控制器的代碼文件【ViewController.swift】swift
如今開始編寫代碼,加載文本文件中的內容,並對文字進行分欄。微信
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 9 //文本視圖控件提供了很大的靈活性,能夠快速進行富文本視圖的建立和設計。 10 //在此初始化一個指定顯示區域的文本視圖,用來實現雜誌中常見的分欄效果。 11 let firstTextView = UITextView(frame: CGRect(x: 20, y: 40, width: 135, height: 200)) 12 //設置第一個視圖的背景顏色爲棕色。 13 firstTextView.backgroundColor = UIColor.brown 14 //取消文本視圖的可滾動性,使多餘的沒法顯示的文字,自動進入第二個文本視圖。 15 firstTextView.isScrollEnabled = false; 16 //將第一個文本視圖添加到根視圖。 17 self.view.addSubview(firstTextView) 18 19 //得到第一個視圖的文字存儲屬性 20 let textStorage = firstTextView.textStorage 21 //建立一個字符串,表示文本文件在項目中的路徑。 22 let path = Bundle.main.url(forResource: "word", withExtension: "txt") 23 //添加一個異常捕捉語句,用來讀取文本文件。 24 do 25 { 26 //讀取文本文件中的文字內容。 27 let string = try String(contentsOf: path!) 28 //將讀取的文字,賦予文本視圖的文字存儲屬性。 29 textStorage.replaceCharacters(in: NSRange(location: 0,length: 0), with: string) 30 } 31 catch 32 { 33 print("Something went wrong :(") 34 } 35 36 //建立第二個文本視圖的顯示區域,它和第一個文本視圖的尺寸相同,可是位於第一個文本視圖的右側。 37 let secondRect = CGRect(x: 165, y: 40, width: 135, height: 200) 38 //初始化一個文字容器對象。 39 let secondTextContainer = NSTextContainer() 40 //使用文字容器對象,建立第二個文本視圖。 41 let secondTextView = UITextView(frame: secondRect, textContainer: secondTextContainer) 42 //設置第二個文本視圖的背景顏色爲棕色 43 secondTextView.backgroundColor = UIColor.brown 44 //取消文本視圖的可滾動性 45 secondTextView.isScrollEnabled = false 46 //將第二個文本視圖添加到根視圖。 47 self.view.addSubview(secondTextView) 48 49 //使用相同的方式,建立最後一個文本視圖,該視圖位於兩個文本視圖的下方。 50 let thirdRect = CGRect(x: 20, y: 250, width: 280, height: 300) 51 //初始化一個文字容器對象。 52 let thirdTextContainer = NSTextContainer() 53 //使用文字容器對象,建立第三個文本視圖。 54 let thirdTextView = UITextView(frame: thirdRect, textContainer: thirdTextContainer) 55 //設置第三個文本視圖的背景顏色爲紫色。 56 thirdTextView.backgroundColor = UIColor.purple 57 //取消第三個文本視圖的可滾動性。 58 thirdTextView.isScrollEnabled = false 59 //將第三個文本視圖添加到根視圖 60 self.view.addSubview(thirdTextView) 61 62 //初始化一個佈局管理器。 63 let layoutManager = NSLayoutManager() 64 //將第一個文本視圖的文字容器,添加到佈局管理器。 65 layoutManager.addTextContainer(firstTextView.textContainer) 66 //將第二個文本視圖的文字容器,也添加到佈局管理器。 67 layoutManager.addTextContainer(secondTextContainer) 68 //將第三個文本視圖的文字容器,添加到佈局管理器, 69 //管理器就能夠將三個文本視圖視爲一個容器, 70 //當內容超出第一個文本視圖的顯示範圍時,將自動填充第二個文本視圖,以此類推。 71 layoutManager.addTextContainer(thirdTextContainer) 72 //將佈局管理器,賦予一個文本視圖的文字存儲屬性, 73 //從而使三個文本視圖,均可以顯示第一個文本視圖的文字存儲屬性的內容。 74 textStorage.addLayoutManager(layoutManager) 75 } 76 77 override func didReceiveMemoryWarning() { 78 super.didReceiveMemoryWarning() 79 // Dispose of any resources that can be recreated. 80 } 81 }