Core Animation - 寄宿图<一>

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

1、contents


寄宿图如其名,它本身并不是这一块的,只是被放在这里寄宿的。在Core Animation中CALayer有一个属性叫做contents,它被定义为id类型,意味着contends可以是任何类型的对象,但除非我们给contents赋CGImage类型的值,否则得到的将是一片空白。


但是我们并不能直接给contents赋值,Core Foundation和Cocoa的类型不能够兼容,所以我们需要对赋值的image做一个类型转化,上一篇博客中我们创建了一个简单的CALayer项目,现在我们往工程中加入一张图片,并赋值给contents,如下:

layer.contents = (__bridge id)image.CGImage;

此处UIImage有一个CGImage属性,它返回一个CGImageRef类型,直接赋值的话编辑器会报错,因为它不是一个Cocoa对象,而是一个Core Foundation类型,所以才有了上面的转化。

2.contentGravity


在视图中我们叫做contentModel,而在图层中,我们叫做contentGravity,它的作用是调整图片的比例,因为我们加载的图片有时候并不是很合适这个图层或者视图,所以这会导致图片变形,那么为了很好的解决这个问题我们用contentGravity或者contentModel来对图片做一些调整:

在view中

 view.contentMode = UIViewContentModeScaleAspectFit;

在CALayer中

self.layerView.layer.contentsGravity = kCAGravityResizeAspect;

这是一个枚举,它还有其他的值可以设置,大家可以自己在工程里面查看。

3.contentsScale


contentsScale是寄宿图的像素尺寸和视图大小的比例,默认为1.0,当这个属性设置为1.0的时候代表每个点为一个像素绘制图片,当为2.0的时候代表每个点为两个像素绘制图片。在我们开发中,经常会用到一倍图,二倍图,甚至三倍图,说的其实就是这个。它的作用是拉伸图片以适应图层,并不会考虑到分辨率的问题,所以设置太高图片就会显示颗粒状,在使用UIImage设置图片的时候,由于CGImage没有拉伸的概念,所以在转化的时候CGImage就丢失了,而UIImage直接读取了高质量的retain图片,就会使图片像素很低,出现模糊,这时候我们可以手动来修复这个问题,设置CALayer的contentsScale为图片的scale:

UIImage *image = [UIImage imageNamed:@"Snowman.png"]; self.layerView.layer.contents = (__bridge id)image.CGImage;
self.layerView.layer.contentsGravity = kCAGravityCenter;
self.layerView.layer.contentsScale = image.scale;

当没有图片时,我们设置为屏幕的scale

layer.contentsScale = [UIScreen mainScreen].scale;


目录
相关文章
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控件,该如何解决?
|
6月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
137 0
|
iOS开发
Core Animation - 图层几何学<一>
Core Animation - 图层几何学<一>
98 0
Core Animation - 图层几何学<一>
Core Animation - 图层行为
Core Animation - 图层行为
83 0
Core Animation - 图层行为
|
图形学
Core Animation - 寄宿图<二>
Core Animation - 寄宿图<二>
73 0
Core Animation -CGContextRef的运用,还有详细解释
Core Animation -CGContextRef的运用,还有详细解释
93 0
|
iOS开发
Core Animation - 第一次使用图层来创建一个简单的项目
Core Animation - 第一次使用图层来创建一个简单的项目
79 0
|
iOS开发 MacOS
Core Animation - 图层几何学<二>
Core Animation - 图层几何学<二>
89 0
Core Animation - 图层时间
Core Animation - 图层时间
78 0
.Net Micro Framework研究—窗体控件
目前版本的MF对TCP协议栈支持也并不完善(对串口也谈不上完善,毕竟不支持奇偶校验、停止位设置),Digi的以太网口是加入了自己的处理方案,明年二月份微软将要发布的MF V3.0版,就已经完全支持TCP了,到时候MF最理想的应用也许就是通信转换了。
523 0