【问题标题】:Scaling CGPatternRef dynamically动态缩放 CGPatternRef
【发布时间】:2011-03-23 15:47:06
【问题描述】:

嘿,我有一个视图,其中包含一些我在其中布局的项目,以及一个平铺的背景图像。我已将其背景颜色设置为 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 *)layer inContext:(CGContextRef)ctx 并从那里调用了 CGContextDrawTiledImage,但是在缩放我的视图时,更新非常不稳定。

任何指导将不胜感激。

谢谢

【问题讨论】:

    标签: objective-c cocoa macos


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多