2009-10-11 129 views
1

我正在製作一個簡單的iPhone應用程序,它的唯一功能是永久更新UIView(直到它退出)。一次又一次更新UIVIew

我的applicationDidFinishLaunching和viewDidLoad中嘗試這樣做:

while(1) { 
    // update view here 
}

但是,這並不與工作的應用從未完成加載。我確信有一個簡單的解決方案,我只是不知道它是什麼。

另外:理想情況下,這個過程應該消耗非常少的資源。

+0

你究竟想用'UIView'做什麼?更新其內容?它的位置? – 2009-10-12 00:32:05

+0

背景顏色 - 我正在製作一個生成配色方案的應用程序。 – igul222 2009-10-12 04:07:16

回答

6

你不能有一個while (1)說法好像有,因爲它不允許viewDidLoad中返回,和你的應用程序將永遠不會得到任何其他調用如自來水處理,屏幕上繪製更新等

在viewDidLoad中,設置一個計時器任務使用:

updateTimer = [NSTimer scheduledTimerWithTimeInterval: kUpdateTimeInterval target:self selector:@selector(updateView) userInfo:nil repeats:YES]; 

並且有一個名爲updateView的方法實際上進行更新。您也可以使用setNeedsDisplay而不是updateView,這會觸發視圖類的-drawRect方法,並在那裏執行實際繪製。

現在發生的事情是,您的viewDidLoad將設置重複任務,並且在每個kUpdateInterval處,您的視圖都將被更新。

+0

謝謝,這正是我一直在尋找的:) – igul222 2009-10-14 03:51:27

1

而不是一直更新視圖,也許你可以在你顯示的數據發生變化時調用它的-setNeedsDisplay方法。