Core Animation - 寄宿图<二>

简介: Core Animation - 寄宿图<二>

上一篇博客中说道寄宿图里面用到的几个常用属性,这一篇继续把剩余的几个属性说完。


1.maskToBounds


类似视图中的cliksToBounds这个属性,他们的功能是一样的,超出父视图的部分会被截取掉。


2.contentsRect


我这里通俗的来说这个属性,它把整个Screen或者父视图作为一个坐标系,大小为{0,0,1,1}整个视图都是可见的,设置的contentRect代表其中的某一块,系统会将这一块的内容拉伸来填充整个区域。


3.contentsCenter


图层的contentCenter在这里和视图的center的功能并不一样,contentCenter代表一个区域,我们可以定义这个区域的某部分用于另一个区域,这是一个奇特的属性,博主按照书上的方法试了,分别用了和图片一样大的视图,大于图片,宽高成比例图和小于图片但宽高成比例的视图和不规则的视图进行尝试,从效果来看图片填充了视图那块区域,并被拉伸了,需要注意的一点是,拉伸的为{x,x,x,x}表示的这块区域,其他部分未拉伸。这里比较难理解,但是大家可以尝试通过代码来理解,看效果就很容易明白了。

代码链接地址:https://github.com/codeliu6572/ContentRect,不懂的可以回复留言。


4.Custom Drawing


设置寄宿图我们除了直接通过图片来设置之外也可以通过Core Graphics绘制的方法来实现,继承与UIView,通过drawRect方法。这个方法很耗费内存,所以我们新建的继承于UIView的类这个方法都会被注释掉,当绘制时它的大小等于寄宿图的大小乘以contentScale,CALayer是一个非正式协议,绘制时我们只需要调用想用的方法就可以,不需要去引用,比较常用的两个方法就是:

-(void)displayLayer:(CALayerCALayer *)layer;
//如果上面的方法不实现,就会尝试调用下面的方法
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;

博主按照书中讲的方法绘制了一下,发现还是很不错的,附上代码:

https://github.com/codeliu6572/drawLayer

对于绘图和动画来说这只是冰山一角,还需要不断的学习来提高自己。

目录
相关文章
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
8月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
151 0
|
Web App开发 存储 安全
大师学SwiftUI第17章Part1 - Web内容访问及自定义Safari视图控制器
App可以让用户访问网页,但实现的方式有不止一种。我们可以让用户通过链接在浏览器中打开文档、在应用界面中内嵌一个预定义的浏览器或是在后台下载并处理数据。
136 0
35avalon - 指令ms-widget(组件绑定介绍)
35avalon - 指令ms-widget(组件绑定介绍)
37 0
|
编解码 iOS开发
Core Animation - 寄宿图<一>
Core Animation - 寄宿图<一>
97 0
Core Animation -CGContextRef的运用,还有详细解释
Core Animation -CGContextRef的运用,还有详细解释
100 0
|
iOS开发
Core Animation - 第一次使用图层来创建一个简单的项目
Core Animation - 第一次使用图层来创建一个简单的项目
85 0
|
前端开发
Flutter 114: 图解自定义 ACEProgressPainter 对比进度图
0 基础学习 Flutter,第一百一十四步:简单绘制一个 ACEProgressPainter 进度对比图!
306 0
Flutter 114: 图解自定义 ACEProgressPainter 对比进度图
.Net Micro Framework研究—窗体控件
目前版本的MF对TCP协议栈支持也并不完善(对串口也谈不上完善,毕竟不支持奇偶校验、停止位设置),Digi的以太网口是加入了自己的处理方案,明年二月份微软将要发布的MF V3.0版,就已经完全支持TCP了,到时候MF最理想的应用也许就是通信转换了。
528 0
|
Windows
.Net Micro Framework研究—实现SideShow窗体界面
基于MF系统的Windows SideShow界面是非常炫的(如下图)。既然微软能用.Net Micro Framework实现这么棒的界面效果,我想我们也能做到。
535 0