是否可以将CGPattern图像背景颜色锚定到CALayer的中心?

时间:2011-12-31 23:15:47

标签: cocoa layout core-animation nsimage cgcolor

我按如下方式设置了一个图层:

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似乎没有做任何事情。)

1 个答案:

答案 0 :(得分:1)

我认为您必须将图层(而不是图像)作为info参数传递,并让绘图函数检索图层frame并使用它来计算要应用的翻译。