Ios 同一图像的慢速绘制

Ios 同一图像的慢速绘制,ios,performance,uiview,uiimageview,core-graphics,Ios,Performance,Uiview,Uiimageview,Core Graphics,我有一个从UIView继承的自定义视图 在这个视图中,有一个图像总是一样的,我只想在上面画 但是,为了绘制图像,我必须在每次绘制循环运行时调用drawInRect - (void)drawRect:(CGRect)rect{ CGContextRef context = UIGraphicsGetCurrentContext(); [image drawInRect:self.bounds]; // drawing.... } 是否有一种方法可以显示图像,而不是每次调

我有一个从
UIView
继承的自定义视图

在这个视图中,有一个图像总是一样的,我只想在上面画

但是,为了绘制图像,我必须在每次绘制循环运行时调用
drawInRect

- (void)drawRect:(CGRect)rect{
    CGContextRef context = UIGraphicsGetCurrentContext();

    [image drawInRect:self.bounds];
    // drawing....
}
是否有一种方法可以显示图像,而不是每次调用
drawRect
时都调用此方法


谢谢。

在自定义类的.h文件中执行以下操作:

- (void)  setup:
然后在.m中执行以下操作:

-(void) setup {
    //drawing stuff
}
然后在视图中加载添加为子视图的任何视图控制器

[myCustomView setup];

将图像放在自定义
ui视图下的
ui图像视图中,而不是在
drawRect:
中绘制。使自定义视图的背景色
clearColor
,以便图像通过where
drawRect:
显示,而不绘制任何内容


不要试图使图像视图成为自定义视图的子视图。子视图总是在其superview内容的顶部绘制。您可以将自定义视图设置为图像视图的子视图,也可以将它们设置为兄弟视图。

我担心这不起作用,因为每次调用drawRect:时它都是不相关的。如果实现正确,此方法将起作用,但如果希望使用draw react,另一个解决方案是在该类中创建bool,如bool didDrawOnce。你可以把它放在.h或.m中。然后在draw rect中:if(didDrawOnce==no){do drawing,然后didDrawOnce=yes;}。这样你只在第一次点击draw rect时才开始画图,但我希望画图是持久的。如果我只调用它一次,下次调用DrawRect时它将不会绘制图像。我想我不完全理解您试图实现的目标,为什么不告诉我您通过这样做尝试实现的具体内容,以便我可以提供一个适合它的解决方案。这非常聪明,谢谢。