本文将演示制作一款更加精美的图文的图文混排效果:将文字紧贴图片边缘的图文混排效果。
往项目中导入一份文本文件。
在左侧的项目导航区,打开视图控制器的代码文件【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 self.vIEw.backgroundcolor = UIcolor.orange11 12 //初始化一个文本视图13 let textVIEw = UITextVIEw(frame: CGRect(x: 20,y: 40,wIDth: 280,height: 500))14 //设置文本视图的背景颜色为橙色15 textVIEw.backgroundcolor = UIcolor.orange16 //设置文本视图的字体大小17 textVIEw.Font = UIFont.systemFont(ofSize: 22)18 //将文本视图添加到根视图19 self.vIEw.addSubvIEw(textVIEw)20 21 //获得文本视图的文字存储属性22 let textStorage = textVIEw.textStorage23 //创建一个字符串,表示文本文件在项目中的路径。24 let path = Bundle.main.url(forResource: "word",withExtension: "txt")25 26 //添加一个异常捕捉语句,用来加载文本文件。27 do28 {29 //读取文本件中的文字内容30 let string = try String(contentsOf: path!)31 //将加载的文字,赋予文本视图的文字存储属性32 textStorage.replaceCharacters(in: NSRange(location: 0,length: 0),with: string)33 }34 catch35 {36 print("Something went wrong :(")37 }38 39 //读取项目中的一张图片素材40 let image = UIImage(named: "Tea")41 //创建一个图像视图,显示加载的图片素材。42 let imageVIEw = UIImageVIEw(image: image)43 //初始化一个矩形区域,作为图像视图的显示区域。44 let rect = CGRect(x: 80,y: 80,wIDth: 150,height: 150)45 //设置图像视图的显示区域46 imageVIEw.frame = rect47 48 //设置图像视图的圆角半径,将图像视图修改为一个圆形。49 imageVIEw.layer.cornerRadius = 7550 //对图像视图进行裁切边缘。51 imageVIEw.layer.masksToBounds = true52 //给图像视图添加一个宽度为10的边框。53 imageVIEw.layer.@R_301_5559@WIDth = 1054 //将图像视图添加到根视图55 self.vIEw.addSubvIEw(imageVIEw)56 57 //由于需要按照图像的边缘,对文本视图中的文字进行排列,58 //所以需要知道图像视图在文本视图中的显示区域。59 //在此将图像视图的边缘属性,转换成使用文本视图中的坐标系统。60 var frame = textVIEw.convert(imageVIEw.bounds,from: imageVIEw)61 //由于文本视图中的文本容器,在默认情况下,并不是位于文本视图的原点位置,所以需要减去这个偏移距离。62 frame.origin.x -= textVIEw.textContainerInset.left;63 //接着减去另一个方向上的偏移距离。64 frame.origin.y -= textVIEw.textContainerInset.top;65 66 //使用贝塞尔路径类,将显示区域转换成一个基于矢量的路径。67 let path2 = UIBezIErPath(ovalIn: frame)68 //将椭圆路径赋予文本视图的排除路径属性,69 //即在文本视图中排除椭圆路径所形成的区域,70 //使文字仅在被排除的区域之外进行排列,71 //从而实现文字沿图像边缘排列的效果。72 textVIEw.textContainer.exclusionPaths = [path2]73 }74 75 overrIDe func dIDReceiveMemoryWarning() {76 super.dIDReceiveMemoryWarning()77 // dispose of any resources that can be recreated.78 }79 }总结
以上是内存溢出为你收集整理的[Swift通天遁地]八、媒体与动画-(15)使用TextKit实现精美的图文混排效果全部内容,希望文章能够帮你解决[Swift通天遁地]八、媒体与动画-(15)使用TextKit实现精美的图文混排效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)