动态扩展CGPatternRef

时间:2011-03-23 15:47:06

标签: objective-c cocoa macos

嘿,我有一个视图,里面放着一些物品,还有一个平铺的背景图片。我已将它的backgroundColor设置为CGPatternRef。我试图得到它所以我可以与我的图层中的内容一起缩放背景图像。我已经将背景图像缩放得很好,我似乎无法弄清楚当比例变化时如何更新它。这是我的drawCallback

static void drawPatternImage (void *info, CGContextRef ctx)
{
    CGImageRef image = (CGImageRef) info;
    CGContextDrawTiledImage(ctx, CGRectMake(0,0, CGImageGetWidth(image)*scaleValue, CGImageGetHeight(image)*scaleValue), image);
}

图像按照我的预期绘制,但是当我更改比例值,然后在我的图层上调用setNeedsDisplay时,不再调用回调方法,并且不更新我的背景。这是解决此问题的最佳方法吗?或者是否有更有效的方法在我的视图中绘制可缩放的可图块化图像。我实现了 - (void)drawLayer:(CALayer *)图层inContext:(CGContextRef)ctx 并从那里调用了CGContextDrawTiledImage,但在缩放视图时,更新非常不稳定。

任何指导都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

CGPattern需要知道模式的大小,并在调用时将其传递给CGPatternCreate。只是在回调中绘制不同的大小不会有帮助,所以你必须销毁并重新设置模式,将新大小传递给CGPatternCreate