Add UIActivityIndicatorView into UIBarButton

后端 未结 6 1523
忘了有多久
忘了有多久 2021-02-01 03:00

How do I add a UIActivityIndicatorView spinner circle into a UIBarButton, so that when a user taps on one of those buttons on the navigation bar, they see a spinner while the lo

相关标签:
6条回答
  • 2021-02-01 03:35

    Actually activity indicator is not added as toolbar item. It's a subview of current view.

    
        UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
        [act setCenter:CGPointMake(20, 20)];
        [act startAnimating];
        [self.view addSubview:act];
    
    

    Remember to release it in -(void)dealloc.

    0 讨论(0)
  • 2021-02-01 03:35

    Use this Methods

    -(void)startAniatingActivityIndicator{
    @try {
        activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
        activityIndicator.frame = CGRectMake(self.window.frame.size.width-30, 32.5, activityIndicator.bounds.size.width, activityIndicator.bounds.size.height);
        [self.window addSubview:activityIndicator];
        [activityIndicator startAnimating];
        [self.window bringSubviewToFront:activityIndicator];
    }
    @catch (NSException *exception) {
    
    }
    @finally {
    
    }
    

    }

    -(void)stopAniatingActivityIndicator{
    [activityIndicator stopAnimating];
    [activityIndicator removeFromSuperview];
    activityIndicator = nil;
    

    }

    0 讨论(0)
  • 2021-02-01 03:40
    activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    activityIndicator.hidesWhenStopped = YES;
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
    

    Place the following where ever is needed:

    [activityIndicator startAnimating];
    [activityIndicator stopAnimating];
    
    0 讨论(0)
  • 2021-02-01 03:42

    pseudocode, i'm not going to check this in Xcode, but something like this should work:

    UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init];
    act.frame = CGMakeRect(3,3,25,25);
    [myBarButton addSubview:act];
    [act release];
    
    0 讨论(0)
  • 2021-02-01 03:52

    UIActivityIndicatorView is a type of view. Set its frame to be within your button and use -addSubview to add it to the view hierarchy of the UIBarButton.

    I'm oversimplifying, since you have to try to make it fit the space (possibly by scaling) and center it...

    0 讨论(0)
  • 2021-02-01 03:56

    If you're trying to show the activity wheel in a navigation bar button (e.g. you might have a refresh button on your navbar) - you can create a new UIBarButtonItem with a custom view being the UIActivityIndicatorView:

    Objective-C

    uiBusy = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    uiBusy.hidesWhenStopped = YES;
    [uiBusy startAnimating];
    [self.navigationItem.rightBarButtonItem initWithCustomView:uiBusy];
    

    Swift

    let uiBusy = UIActivityIndicatorView(activityIndicatorStyle: .White)
    uiBusy.hidesWhenStopped = true
    uiBusy.startAnimating()
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: uiBusy)
    

    This overwrites your rightBarButtonItem with the spinning wheel. When you're done, just recreate the rightBarButtonItem.

    0 讨论(0)
提交回复
热议问题