UIActivityIndicatorView or similar

2019-03-08 08:44发布

alt text http://28.media.tumblr.com/tumblr_ky3ezghsar1qzzxzzo1_400.jpg

Can anyone tell me how to achieve such loading message? is it some variation of UIActivityIndicatorView? thanks peter

6条回答
甜甜的少女心
2楼-- · 2019-03-08 09:24

The spinning wheel is definitely a UIActivityIndicatorView. The "Loading..." text is a UILabel, the rectangle could be an image or could be a UIView with rounded corners (via CALayer). Any questions about the rest of the message? T

查看更多
家丑人穷心不美
3楼-- · 2019-03-08 09:25

If you're looking for existing solutions you may use three20 library - they have implemented this functionality in TTActivityLabel class.

查看更多
▲ chillily
4楼-- · 2019-03-08 09:30

My way of doing this works much simpler and smooth for me;

Design your loading view in Interface Builder inside your "MainWindow.xib" which is available all through the lifetime of the app (of course if you have one, depending on the type and structure of choice) If you dont have one, just design it inside some view where you can programmatically grab a pointer from your main AppDelegate (use your taste of design choice, but using MainWindow.xib is the easiest)

Then map this view to a variable in your YourApp class which is the infamous app delegate class of yours.

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

Then, put the following functions in some class and enjoy them

This for showing the loading view just before you run some expensive stuff;

+(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];
}

and this to remove it from the callback or whatever it goes when the expensive action is completed;

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

P.S: And yes I use NULL, true, false instead of nil, YES, NO for obvious reasons...

Hope it helps, Enjoy...

查看更多
贼婆χ
5楼-- · 2019-03-08 09:45

If you wanted a different animation, I created a custom UIView (Loader Animation) to which you could load into a subclass of UIActivity.

查看更多
SAY GOODBYE
6楼-- · 2019-03-08 09:47

Something similar to the following in your initWithFrame of your custom subclassed UIView:

    _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];
查看更多
Evening l夕情丶
7楼-- · 2019-03-08 09:48

see this----

- (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];


        }


    }


}
查看更多
登录 后发表回答