我按如下方式设置了一个图层:
CALayer *layer = [CALayer layer];
layer = /* create a CGColorRef with a pattern image */;
此图层只显示在我的窗口中。我对模式的绘制/释放功能如下:
void drawPattern(void *info, CGContextRef c) {
CGContextDrawImage(c, CGRectMake(0, 0, CGImageGetWidth(info), CGImageGetHeight(info)), info);
}
void releaseInfo(void *info) {
CGImageRelease((CGImageRef)info);
}
默认情况下,模式锚定在窗口的左下角,因此当我调整窗口大小时,该点是固定的。
我发现我可以通过两个步骤将它固定在左上角:
layer.geometryFlipped = YES;
CGAffineTransformMakeScale(1, -1)
作为CGPatternCreate
的参数,而不是CGAffineTransformIdentity
。但是我怎么能把它固定在中心? (更改图层的anchorPoint
似乎没有做任何事情。)
答案 0 :(得分:1)
我认为您必须将图层(而不是图像)作为info
参数传递,并让绘图函数检索图层frame
并使用它来计算要应用的翻译。