en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

6.16.2011

Progress View 的使用方法


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 / 加速器 / 重力控制器 / 水平儀的基本使用方法一文。






2 則留言:

  1. 板主您好:

    我想請問一下要如何實現讀取條讀取完畢後隱藏呢?

    謝謝您~

    回覆刪除
    回覆
    1. 哈囉 KEN講

      不知道你是「隱藏起來」,還是要「完全移除」呢?不過不論如何你都必須在更改 UIProgressView 數值時做判斷,判斷他是否滿足你所要的條件(讀取完畢)。

      接著你可以使用 UIProgressView.hidden 暫時隱藏 UIProgressView

      或者

      使用 [UIProgressView removeFromSuperview] 方法涵式來移除 UIProgressView

      ps:如果你找不到 removeFromSuperview 方法涵式,你可以試著看看物件的 view 屬性,例如[UIButton.view removeFromSuperview]

      希望有幫到你

      刪除