簡體   English   中英

(iPhone SDK)在加載視圖控制器時如何顯示動畫活動指示器?

[英](Iphone Sdk) How to display animated activity Indicator while a view controller is loading?

我有一個很沉重的視圖,需要花費兩秒鍾或更長時間來加載。 我想顯示活動指示器,同時在viewDidLoad承載所有東西,然后將其隱藏。 有人可以指導我這樣做嗎? 提前致謝。

嘗試使用Matej Bukovinski的MBProgressHUD。

https://github.com/matej/MBProgressHUD

在后台獲取數據

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
[self.navigationController.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Loading";
[HUD showWhileExecuting:@selector(getStartupData:)
               onTarget:self
             withObject:nil
               animated:YES]

如果要在主線程中獲取數據,只需顯示HUD,然后在收到通知時將其關閉。

HUD = [[MBProgressHUD alloc] initWithView:self.tableView];
[self.tableView addSubview:HUD];
HUD.labelText = @"Loading";
HUD.tag = 998;
[HUD show:YES];
[HUD release];

我不確定,但我懷疑是否可以在后台線程上運行viewDidLoad。 如果是這樣,則在運行viewDidLoad時無法為活動指示器設置動畫。

因此,如果您是我,那么我將找出花費viewDidLoad這么長時間的東西,並將其放入可以在后台運行的方法中。

然后在viewWillAppear方法中添加活動指示器視圖,並在后台任務完成時將其刪除。

根據您在viewDidLoad中所做的工作,這可能需要大量重構和添加委托方法。
我猜您正在下載應顯示的內容。

嘗試將花費很長時間的內容移到viewDidAppear中。 然后,您可以使用活動指示器創建一個新視圖並使它可見(在界面構建器中最簡單),一旦完成所有工作,只需調用:

[loadingView setHidden:YES];

祝好運

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 在從中調用慢速加載的viewController的視圖中,或者在慢速啟動器為初始視圖的情況下進入appDidFinishLoading。

另外,考慮將耗時較長的活動從主線程移至后台線程,以保持GUI始終響應。

您可以在viewDidLoad中非常簡單地執行此操作

UIAactivityIndicatorView *  date  = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(150, 150, 30, 30)];
[date setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.view addsubview:date];
[date startAnimating];

加載頁面視圖后,您可以通過[date stopAnimating]停止對“活動性”指示器進行動畫處理;

這會工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM