2013-06-25 26 views
0

我有一個調用外部web服務的方法。 現在我想在屏幕中間顯示UIActivityIndicatorView,而webservice-call正在運行。我異步調用webservice-method。但是用我在底部找到的代碼,我有兩個問題:顯示動畫並鎖定當前視圖

  1. 當前視圖未鎖定。這意味着用戶可以與當前視圖進行交互。我想阻止所有,直到動畫停止
  2. 動畫不居中

這裏是我的代碼,我現在已經嘗試:

-(void)saveDataOnServer { 
    UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(225, 115, 30, 30)]; 
    [activity setBackgroundColor:[UIColor clearColor]]; 
    [activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray]; 
    [self.view addSubview:activity]; 
    [activity startAnimating]; 

    // ...  

    [NSURLConnection sendAsynchronousRequest: request 
             queue: queue 
          completionHandler: ^(NSURLResponse *response, NSData *data, NSError *error) { 

           [activity stopAnimating]; 

           // ... 
          } 
    ]; 
} 
+0

[self.view setUserInteractionEnabled:NO];設置此項以鎖定與View的交互。動畫不居中,然後檢查你的框架調整? – the1pawan

回答

2

你必須把另一種觀點認爲,當活動的指標入手:

UIView *overlayView; 
overlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
overlayView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 
[[UIApplication sharedApplication].keyWindow addSubview:overlayView]; 

並移除視圖(OverlayView的)當活動指示停止:

[overlayView removeFromSuperview]; 

這OverlayView的將覆蓋CURREN所以用戶不能與當前視圖交互。

0

您好我要給你一個很好的解決方案.. 有保險業監督庫調用MBProgressHUD 它做所有你想要的,有型有款 這是和鏈接庫HERE

其好用SE ..這裏是我用

self.hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
self.hud.mode = MBProgressHUDModeIndeterminate; 
self.hud.labelText = @"Fetching News"; 
//[email protected]"Fetching News"; 
self.hud.dimBackground = YES; 

,有一個演示,你可以看到一個例子..乾杯:d

+0

謝謝 - 多數民衆贊成在!還有一個問題:我怎樣才能阻止這個問題? – BennoDual

+0

簡單使用'[self.hud hide:YES];' – iJazJaz