Wednesday, October 19, 2011

Porting OpenCV 2.3.1 to iPhone 3GS/4/4S - 在耗時的程序中使用UIActivityIndicatorView來通知使用者程式還在執行中

在使用OpenCV函式庫時,你會發現很多運算都是相當耗時,這時候我們就需要利用iOS中的UIActivityIndicatorView來通知使用者程式還在執行運算,請稍待。如何使用呢?精簡的步驟如下:

1. 在xxxViewController.h的@interface xxxViewController...中宣告
           UIActivityIndicatorView * activityIndicator;
         
           並加上如下的程式碼:
       @property (nonatomic, retain) IBOutlet UIActivityIndicatorView * activityIndicator;
       -(void)spinActivityIndicatorBegin;
       -(void)spinActivityIndicatorEnd;

2. 使用Interface Builder 擺一個UIActivityIndicatorView在你想要放置的位置上,並連接到上面這個 activityIndicator;設置屬性為 hidden when stopped.
3. 在xxxViewController.m實作spinActivityIndicatorBeginspinActivityIndicatorEnd如下:
       - (void) spinActivityIndicatorBegin {
            [activityIndicator startAnimating];
       }

       - (void) spinActivityIndicatorEnd {
            [activityIndicator stopAnimating];
       }
4. 在xxxViewController.m耗時運算的前後作如下的呼叫:
       [NSThread detachNewThreadSelector: @selector(spinActivityIndicatorBegin) toTarget:self withObject:nil];
       //此處為耗時運算

       [NSThread detachNewThreadSelector: @selector(spinActivityIndicatorEnd) toTarget:self withObject:nil];

完成後執行程式應該就可以看到小菊花在你設定的位置轉阿轉的囉!


No comments:

Post a Comment