本文将演示对长文本进行分栏显示。往项目中导入一份文本文件。
在左侧的项目导航区,打开视图控制器的代码文件【VIEwController.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.brown14 //取消文本视图的可滚动性,使多余的无法显示的文字,自动进入第二个文本视图。15 firstTextVIEw.isScrollEnabled = false;16 //将第一个文本视图添加到根视图。17 self.vIEw.addSubvIEw(firstTextVIEw)18 19 //获得第一个视图的文字存储属性20 let textStorage = firstTextVIEw.textStorage21 //创建一个字符串,表示文本文件在项目中的路径。22 let path = Bundle.main.url(forResource: "word",withExtension: "txt")23 //添加一个异常捕捉语句,用来读取文本文件。24 do25 {26 //读取文本文件中的文字内容。27 let string = try String(contentsOf: path!)28 //将读取的文字,赋予文本视图的文字存储属性。29 textStorage.replaceCharacters(in: NSRange(location: 0,length: 0),with: string)30 }31 catch32 {33 print("Something went wrong :(")34 }35 36 //创建第二个文本视图的显示区域,它和第一个文本视图的尺寸相同,但是位于第一个文本视图的右侧。37 let secondRect = CGRect(x: 165,height: 200)38 //初始化一个文字容器对象。39 let secondTextContainer = NSTextContainer()40 //使用文字容器对象,创建第二个文本视图。41 let secondTextVIEw = UITextVIEw(frame: secondRect,textContainer: secondTextContainer)42 //设置第二个文本视图的背景颜色为棕色43 secondTextVIEw.backgroundcolor = UIcolor.brown44 //取消文本视图的可滚动性45 secondTextVIEw.isScrollEnabled = false46 //将第二个文本视图添加到根视图。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.purple57 //取消第三个文本视图的可滚动性。58 thirdTextVIEw.isScrollEnabled = false59 //将第三个文本视图添加到根视图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 }总结
以上是内存溢出为你收集整理的[Swift通天遁地]八、媒体与动画-(14)使用TextKit快速实现文章的分栏效果全部内容,希望文章能够帮你解决[Swift通天遁地]八、媒体与动画-(14)使用TextKit快速实现文章的分栏效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)