CALayer的contentsRect
contentsRect
想像下contentsRect作为层内容的可视区域。内容的矩形区域(x,y,width,height)也是绑定到层的框架上的。contentRect是一个比例值,而不是屏幕上真实的像素点。默认的是0.0,0.0,1.0,1.0.当你改变x时,例如,在0和1之间你设定为0.25,那么内容的观察窗口就展示在400像素中的100像素的位置(400 x 0.25),也就是一个层原始宽度的25%。如果你设定了width属性为0.25,那么观察窗口的宽度就是100,也就是一个层原始宽度的25%。图2-1和2-2演示了contentsRect如何展示原始的图像层的区域。
你可能想只显示你的图层的某一部分,例如图2-1所示的投射区域,那么很显然它的CGRect是(100.0,64.0,200.0,128.0),换成contentRect就是分别除以原图层的宽和高。当然还有一种情况,你不但需要整个图层,还希望有点边框,假设你要在四周加十分之一的边框,那么很显然对于width和height我们可以设置为1.2.但是x,y显然跑到第三象限去了~~~此时的contentRect是CGRectMake(-0.1,-0.1,1.2,1.2),此时如果放入一个特定大小的图层,我们得到的图像相对于放入原图层的情况,看起来会缩小。
当然这在iOS和Mac OS X上有所不同,因为iOS上,CALayer的contents的坐标原点在左上角,使用contentRect截取的内容有所不同。
图2-1
图2-2