[英]Display a welcome View with activity indicator while data downloading [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.