我设置了一个图层,如下所示:
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
似乎没有任何作用。)
最佳答案
我认为您必须将图层而不是图像作为 info
参数传递,并让您的绘图函数检索图层的 frame
并使用它来计算要应用的翻译。
关于cocoa - 是否可以将 CGPattern 图像背景颜色锚定到 CALayer 的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691033/