使用drawRect和setNeedsDisplayInRect绘制最小值

时间:2013-03-07 13:04:33

标签: objective-c xcode drawrect setneedsdisplay

他,我刚刚意识到[self setNeedsDisplayInRect:(dRect)]绘制所有内容(而不仅仅是必要的内容)然后更新“dRect”中的屏幕。所以我开始编辑drawRect方法,如下所示:

- (void)drawRect:(NSRect)dirtyRect{
    if (gUs==1){
        imagePos = NSMakePoint(0, 0);
        [_bz_BG dissolveToPoint:imagePos fraction:1.0];
        [self drawBPM];
        [self writeSeq1steps];
        [self writeSeq2steps];
        [self drawSeq1Patterns];
        [self drawSeq2Patterns];
        [self drawSeq1];
        [self drawSeq2];
        [self drawSampleNameSeq1];
        [self drawSampleNameSeq2];
        [self drawBattCharge];
        [self drawCPUload];}
    if (gUs==2){
        [self drawCPUload];}
    if (gUs==3){
        [self drawBattCharge];}
    if (gUs==4){
        [self drawBPM];}
}

然后让需要显示的方法改变“gUs”。这很好用,因为我有很多控件可以极大地减少cpu工作。

但后来我发现在重负载或经常显示更新时,有时另一种方法会在处理前一次调用的needDisplay之前改变“gUs”,导致错误的绘图。

我该如何避免这种情况?

0 个答案:

没有答案