[Swift通天遁地]八、媒体与动画-(15)使用TextKit实现精美的图文混排效果

[Swift通天遁地]八、媒体与动画-(15)使用TextKit实现精美的图文混排效果,第1张

概述本文将演示制作一款更加精美图文的图文混排效果:将文字紧贴图片边缘的图文混排效果。 往项目中导入一份文本文件。 在左侧的项目导航区,打开视图控制器的代码文件【ViewController.swift】 1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDi

本文将演示制作一款更加精美的图文的图文混排效果:将文字紧贴图片边缘的图文混排效果。

往项目中导入一份文本文件。

在左侧的项目导航区,打开视图控制器的代码文件【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实现精美的图文混排效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1019936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存