Progress View 是一個最小值為 0 最大值為 1 的狀態列,最常被當成讀取條來使用,可以告訴使用者目前的執行狀態,下列程式碼將演示如何在畫面上建立一 UIProgressView 並使用計時器 Timer 來模擬 Loading 的動作。
首先從 Interface Builder 中將 Progress View 物件拖曳至畫面上設定好其位置與大小,之後回到程式碼中設定 @property 與 @synthesize 並與介面元件做好連結,相關方式可以參閱從使用 UIButton 說 Hello 開始說起(上)一文。
接下來是設定計時器 Timer 的部份,相關說明以參考 Timer / 計時器的基本使用方法一文。
//設定Timer 每秒五次
float theInterval = 1.0 / 5.0;
[NSTimer scheduledTimerWithTimeInterval:theInterval target:self selector:@selector(running) userInfo:nil repeats:YES];
最後是被計時器 Timer 所呼叫的自訂函式 running。
- (void)running {
if (theProgress.progress != 1.0) {
theProgress.progress = theProgress.progress + 0.1;
}
else {
theProgress.progress = 0.0;
}
}
程式碼到此,讀取條的數值就會隨著時間不斷累加向右移動,一直到 100% 之後又會歸零重新開始。
如果不想使用 Interface Builder 來製作 Progress View,也可以參考下列程式碼採用動態的方式產生此物件。
UIProgressView *theBarProgress = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
theBarProgress.frame = CGRectMake(80, 200, 280, 10);
theBarProgress.center = CGPointMake(160, 200);
theBarProgress.progress = 0.5;
[self.view addSubview:theBarProgress];
UIProgressView 的應用當然不限於此文章中也曾經使用 UIProgressView 來當成檢視水平儀的狀態,可參閱 Accelerometer / 加速器 / 重力控制器 / 水平儀的基本使用方法一文。
板主您好:
回覆刪除我想請問一下要如何實現讀取條讀取完畢後隱藏呢?
謝謝您~
哈囉 KEN講
刪除不知道你是「隱藏起來」,還是要「完全移除」呢?不過不論如何你都必須在更改 UIProgressView 數值時做判斷,判斷他是否滿足你所要的條件(讀取完畢)。
接著你可以使用 UIProgressView.hidden 暫時隱藏 UIProgressView
或者
使用 [UIProgressView removeFromSuperview] 方法涵式來移除 UIProgressView
ps:如果你找不到 removeFromSuperview 方法涵式,你可以試著看看物件的 view 屬性,例如[UIButton.view removeFromSuperview]
希望有幫到你