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

标签 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 似乎没有任何作用。)

最佳答案

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

关于cocoa - 是否可以将 CGPattern 图像背景颜色锚定到 CALayer 的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691033/

相关文章:

java - 使用 for 循环将 EditText 添加到 android 中的布局

ios - CAReplicatorLayer 的下雪效果

ios - CAScrollLayer 内的自滚动文本

android - 如何在 android 的布局上应用滤色器\覆盖?

ios - Swift:核心动画没有动画

iphone - 启用 iOS 磁盘加密

objective-c - cocoa :如何将 NSAttributedString 保存到 JSON

objective-c - 带有实时字体(样式文本)的 NSPopupButton

swift - 适合 NSTextView 的字符数

java - JPanel & 组件自动改变位置