使用drawAsPatternInRect绘制图像时如何忽略转换:

时间:2010-08-10 11:42:46

标签: objective-c iphone uiimage quartz-graphics

我使用以下代码在视图中绘制背景图像:

CGContextRef currentContext = UIGraphicsGetCurrentContext();  CGContextSaveGState(currentContext);

UIImage * image = [UIImage imageNamed:@“background.jpg”];  [image drawAsPatternInRect:rect];

CGContextRestoreGState(currentContext);

这很有效。但是当我更改动画视图的大小时,绘制的图像会缩放,直到重绘为止。如何在动画期间忽略此转换?

3 个答案:

答案 0 :(得分:2)

目前我不认为这是可能的。由于iPhone没有非常快的处理器Apple选择禁用LiveRedraw功能(实际上在Mac上可用)。

答案 1 :(得分:1)

尝试将视图的contentMode设置为UIViewContentModeRedraw

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {

        // Get the view to redraw when it's frame is changed
        self.contentMode = UIViewContentModeRedraw;

    }
    return self;
}

答案 2 :(得分:1)

我终于找到了解决方案。我使用contentMode UIViewContentModeTopLeft,因此它不会被缩放。在调整大小动画之前,我只重新绘制新大小的旧大小。在动画之后我总是重绘。