我有一个CALayer的,我想给它添加一个伸展的形象。 如果我只是做:
_layer.contents = (id)[[UIImage imageNamed:@"grayTrim.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 15.0, 0.0, 15.0)].CGImage;
它不会工作,因为图层的默认contentGravity是kCAGravityResize。
我读过,这可以使用contentsCenter来完成,但我似乎无法弄清楚到底如何我会用它来实现扩张的图象在我的CALayer。
任何想法,欢迎!
霍拉丘
对这个问题的回应是这一个。 比方说您有伸展仅在宽度,并且具有固定的高度(为简单起见)的可拉伸图像。
该图像是31px宽度(15像素固定大小 - 不拉伸 - ,1px的将被拉伸)
假设你的层是CALayer的子类的init方法应该是这样的:
- (id)init
{
self = [super init];
if (self) {
UIImage *stretchableImage = (id)[UIImage imageNamed:@"stretchableImage.png"];
self.contents = (id)stretchableImage.CGImage;
self.contentsScale = [UIScreen mainScreen].scale; //<-needed for the retina display, otherwise our image will not be scaled properly
self.contentsCenter = CGRectMake(15.0/stretchableImage.size.width,0.0/stretchableImage.size.height,1.0/stretchableImage.size.width,0.0/stretchableImage.size.height);
}
return self;
}
按照文档contentsCenter矩形必须具有0-1之间的值。
默认为得到的整个图像中的单位矩形(0.0,0.0)(1.0,1.0)被缩放。 如果矩形的单位矩形外侧延伸的结果是不确定的。
就是这个。 希望别人会发现这个有用的,它会节省一些开发时间。