这个问题的答案就是这个。假设您有一个可拉伸的图像,它仅在宽度上拉伸并且高度固定(为简单起见)。
图片为 31px 宽度(15px 固定大小 - 不拉伸 - 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) 导致整个图像被缩放。如果矩形延伸到单位矩形之外,则结果未定义。
就是这个。希望其他人会发现这很有用,并且可以节省一些开发时间。