2010-06-22 48 views
1

我在刷新定時器上的文本時遇到問題。我正在顯示當前時間並每秒刷新一次屏幕。我遇到的問題是舊時間在打印新時間時不會被擦除。如何在iPhone應用程序中重寫文本

這是顯示當前時間的功能。

- (void)drawRect:(CGRect)rect { 
    CGPoint location = CGPointMake(10,20); 
    UIFont *font = [UIFont systemFontOfSize:24.0]; 
    [[UIColor whiteColor] set]; 
    NSString *s = [NSString stringWithFormat:@"%@", [NSDate date]]; 
    [s drawAtPoint:location withFont:font]; 
} 

下面是刷新當前每一秒計時器:

- (IBAction)startRepeatingTimer { 
    NSRunLoop *runloop = [NSRunLoop currentRunLoop]; 
    NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; 
    [runloop addTimer:timer forMode:NSDefaultRunLoopMode]; 
} 

- (void)timerFireMethod:(NSTimer*)theTimer { 
    [self setNeedsDisplay]; 
} 

我怎樣才能刪除舊的文本或擦拭整個畫面乾淨?

+0

您不只是使用標籤的任何特定原因?您通常不會繪製必須不斷重繪的文本。使用其中一個以文本爲中心的UI元素會更容易。 – TechZen 2010-06-22 03:16:39

+0

我只是試驗可可,並想知道如何用手做。我計劃在發佈任何應用程序之前使用界面構建器。 – Gattster 2010-06-27 05:48:49

回答

1

一旦您將文本繪製到上下文中,它不再是文本,而只是位中的另一個圖形模式。你基本上堅持用背景顏色覆蓋繪製的文本。如果您有複雜的背景,可以在繪製文本之前將其複製,然後一次又一次在同一位置繪製副本以進行擦除。

但是,你可能不應該打擾。使用專爲顯示文本(如標籤)而設計的界面元素幾乎總是更容易且更強大。

0

我發現了一種可行的技術。

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetRGBFillColor(0, 0, 0, 0, 0); 
CGContextFillRect(context, rect); 
相關問題