2010-02-19 16 views

risposta

1

La ruota che gira è sicuramente un UIActivityIndicatorView. Il testo "Caricamento in corso ..." è un UILabel, il rettangolo potrebbe essere un'immagine o potrebbe essere un UIView con angoli arrotondati (tramite CALayer). Hai domande sul resto del messaggio? T

1

Se stai cercando soluzioni esistenti è possibile utilizzare la libreria three20 - hanno implementato questa funzionalità nella classe TTActivityLabel.

22

Qualcosa di simile a quanto segue nel initWithFrame del vostro UIView sottoclasse personalizzato:

_hudView = [[UIView alloc] initWithFrame:CGRectMake(75, 155, 170, 170)]; 
    _hudView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 
    _hudView.clipsToBounds = YES; 
    _hudView.layer.cornerRadius = 10.0; 

    _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    _activityIndicatorView.frame = CGRectMake(65, 40, _activityIndicatorView.bounds.size.width, _activityIndicatorView.bounds.size.height); 
    [_hudView addSubview:_activityIndicatorView]; 
    [_activityIndicatorView startAnimating]; 

    _captionLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 115, 130, 22)]; 
    _captionLabel.backgroundColor = [UIColor clearColor]; 
    _captionLabel.textColor = [UIColor whiteColor]; 
    _captionLabel.adjustsFontSizeToFitWidth = YES; 
    _captionLabel.textAlignment = NSTextAlignmentCenter; 
    _captionLabel.text = @"Loading..."; 
    [_hudView addSubview:_captionLabel]; 

    [self addSubview:_hudView]; 
+0

Fantastico! Grazie per la soluzione !! –

0

Il mio modo di fare questo funziona molto più semplice e liscio per me;

Progetta la tua View Caricamento in Interface Builder all'interno del vostro "MainWindow.xib" che è disponibile per tutta la durata della app (ovviamente se ne avete uno, a seconda del tipo e la struttura della scelta) Se non ne hai uno, basta disegnarlo all'interno di una vista in cui puoi prendere un puntatore dal tuo AppDelegate principale (usa il gusto della scelta del design, ma usare MainWindow.xib è il più semplice)

Quindi mappare questa vista a una variabile in la tua classe YourApp, che è la famigerata classe di delegati delle app.

Let the designed View map to an IBOutlet named "loading" 
inside your app delegate class "YourApp" 
by using the Interface Builder's wiring 

Poi, mettere le seguenti funzioni in qualche classe e godere li

Questo per mostrare la vista di carico poco prima di eseguire un certo roba costosa;

+(void)showLoading { 
    YourApp* app = (YourApp*)[[UIApplication sharedApplication] delegate]; 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = true; 
    [app.loading removeFromSuperview]; 
    [app.window addSubview:app.loading]; 
    app.loading.alpha = 0.0; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.50]; 
    app.loading.alpha = 0.8; 
    [UIView commitAnimations]; 
} 

e questo per rimuoverlo dalla richiamata o qualunque cosa vada quando l'azione costosa è completata;

+(void)hideLoading { 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = false; 
    YourApp* app = (YourApp*)[[UIApplication sharedApplication] delegate]; 
    [app.loading removeFromSuperview]; 
} 

PS: E sì io uso NULL, vero, falso invece pari a zero, YES, NO per ovvi motivi ...

Speranza che aiuta, Godetevi ...

1

vedono questo ----

- (void)viewDidLoad { 
    [super viewDidLoad]; 

     // [self ShowMsg]; 

    //-----------------checking version of IOS ----------------------------------- 
    CGFloat ver = [[[UIDevice currentDevice]systemVersion]floatValue]; 
    NSString *str = [NSString stringWithFormat:@"%f",ver]; 
    NSLog(@"%@",str); 
    NSArray *arr = [str componentsSeparatedByString:@"."]; 
    strVerChk = [arr objectAtIndex:0]; 
    NSLog(@"%@",strVerChk); 
    [strVerChk retain]; 

    NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
    NSLog(@"integer %d",verChk); 
    if (verChk < 5) { 
     imag = [UIImage imageNamed:@"WaitScreen.png"]; 
    } 
    else 
    { 
     imag = [UIImage imageNamed:@"WaitScreen_5.png"]; 
    } 
    Lblmsg = [[UILabel alloc]init]; 
       //WithFrame:CGRectMake(10, 10, 100, 30)]; 
    Lblmsg.backgroundColor = [UIColor clearColor]; 
    Lblmsg.textColor = [UIColor whiteColor]; 
    Lblmsg.text = @"  Please Wait...."; 

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
     [Lblmsg setFont:[UIFont fontWithName:@"Arial" size:16]]; 
    }else 
    { 
     [Lblmsg setFont:[UIFont fontWithName:@"Arial" size:12]]; 
    } 

    Lblmsg.textAlignment = UITextAlignmentCenter; 
    activityInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    // [activityInd startAnimating]; 

    imageview = [[UIImageView alloc]initWithImage:imag]; 
    [imageview addSubview:Lblmsg]; 
    [imageview addSubview:activityInd]; 
    [self.view addSubview:imageview]; 
    self.view.backgroundColor = [UIColor clearColor]; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    { 

     // self.interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation 
     UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
     if(orientation == UIInterfaceOrientationPortrait ||orientation == UIInterfaceOrientationPortraitUpsideDown) 
     { 
      self.view.frame = CGRectMake(0, 0, 320, 480); 
      imageview.frame = CGRectMake(100, 130, 120, 80); 
     } 
     else{ 
      self.view.frame = CGRectMake(0, 0, 480, 320); 
      imageview.frame = CGRectMake(180, 70, 120, 80); 

     } 
     Lblmsg.frame = CGRectMake(0, 45, 120, 40); 

     NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
     NSLog(@"integer %d",verChk); 
     if (verChk < 5) { 
      activityInd.frame = CGRectMake(41, 9, 28, 28); 
     } 
     else 
     { 
      activityInd.frame = CGRectMake(41, 9, 28, 28); 
     } 
     [activityInd startAnimating]; 
    } 
    else{ 

     UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
     if(orientation == UIInterfaceOrientationPortrait ||orientation == UIInterfaceOrientationPortraitUpsideDown) 
     { 
      self.view.frame = CGRectMake(0, 0, 768, 1024); 
      imageview.frame = CGRectMake(274, 330, 210, 160); 
      Lblmsg.frame = CGRectMake(10, 115, 190, 30); 
      NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
      NSLog(@"integer %d",verChk); 
      if (verChk < 5) {   
      activityInd.frame = CGRectMake(71, 20, 52, 52); 
      } 
      else 
      { 
       activityInd.frame = CGRectMake(71, 20, 49, 49); 
      } 
      [activityInd startAnimating]; 

     } 
     else{ 
      self.view.frame = CGRectMake(0, 0, 1024, 768); 
      imageview.frame = CGRectMake(390, 264, 200, 150); 
      Lblmsg.frame = CGRectMake(10, 115, 180, 30); 

      NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
      NSLog(@"integer %d",verChk); 
      if (verChk < 5) {   
       activityInd.frame = CGRectMake(68, 17, 52, 52); 
      } 
      else 
      { 
       activityInd.frame = CGRectMake(68, 17, 49, 49); 
      } 
      [activityInd startAnimating]; 

     } 


    } 


    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(didRotate) 
               name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 

} 
-(void)didRotate{ 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    { 

     // self.interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation 
     UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
     if(orientation == UIInterfaceOrientationPortrait ||orientation == UIInterfaceOrientationPortraitUpsideDown) 
     { 
      self.view.frame = CGRectMake(0, 0, 320, 480); 
      imageview.frame = CGRectMake(100, 130, 120, 80); 
      //Lblmsg.frame = CGRectMake(0, 40, 120, 30); 
      //activityInd.frame = CGRectMake(20, 10, 80, 30); 


     } 
     else{ 
      self.view.frame = CGRectMake(0, 0, 480, 320); 
      imageview.frame = CGRectMake(180, 70, 120, 80); 

      //activityInd.frame = CGRectMake(20, 10, 80, 30); 
      //activityInd.frame = CGRectMake(50, 15, 10, 10); 
      //[activityInd startAnimating]; 


     } 
     Lblmsg.frame = CGRectMake(0, 45, 120, 40); 
     NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
     NSLog(@"integer %d",verChk); 
     if (verChk < 5) { 
      activityInd.frame = CGRectMake(41, 9, 28, 28); 
     } 
     else 
     { 
      activityInd.frame = CGRectMake(41, 9, 28, 28); 
     } 

     [activityInd startAnimating]; 
    } 
    else{ 

     UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
     if(orientation == UIInterfaceOrientationPortrait ||orientation == UIInterfaceOrientationPortraitUpsideDown) 
     { 
      self.view.frame = CGRectMake(0, 0, 768, 1024); 
      imageview.frame = CGRectMake(274, 330, 210, 160); 
      Lblmsg.frame = CGRectMake(10, 115, 190, 30); 
      NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
      NSLog(@"integer %d",verChk); 
      if (verChk < 5) {   
       activityInd.frame = CGRectMake(71, 20, 52, 52); 
      } 
      else 
      { 
       activityInd.frame = CGRectMake(71, 20, 49, 49); 
      } 
      [activityInd startAnimating]; 


     } 
     else{ 
      self.view.frame = CGRectMake(0, 0, 1024, 768); 
      imageview.frame = CGRectMake(390, 264, 200, 150); 
      Lblmsg.frame = CGRectMake(10, 115, 180, 30); 
      NSInteger verChk = [[NSString stringWithFormat:@"%@",strVerChk]intValue]; 
      NSLog(@"integer %d",verChk); 
      if (verChk < 5) {   
       activityInd.frame = CGRectMake(68, 17, 52, 52); 
      } 
      else 
      { 
       activityInd.frame = CGRectMake(68, 17, 49, 49); 
      } 
      [activityInd startAnimating]; 


     } 


    } 


} 
+0

grazie per aver salvato la mia giornata. –

0

Se si voleva un'animazione diversa, ho creato un custom UIView (Loader Animation) a cui è possibile caricare in una sottoclasse di UIActivity.

Problemi correlati