Подтвердить что ты не робот

Добавить UIActivityIndicatorView в UIBarButton

Как добавить круг Spinner UIActivityIndicatorView в UIBarButton, так что, когда пользователь нажимает на одну из этих кнопок на панели навигации, они видят вращатель во время загрузки?

4b9b3361

Ответ 1

Если вы пытаетесь показать колесо активности на панели навигации (например, у вас может быть кнопка обновления на вашем навигационном баре), вы можете создать новый UIBarButtonItem с настраиваемым представлением 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)

Это перезаписывает ваш rightBarButtonItem вращающимся колесом. Когда вы закончите, просто заново создайте rightBarButtonItem.

Ответ 2

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

Поместите следующее, когда это необходимо:

[activityIndicator startAnimating];
[activityIndicator stopAnimating];

Ответ 3

Фактически индикатор активности не добавляется как элемент панели инструментов. Это подвид текущего вида.


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

Не забудьте отпустить его в -(void)dealloc.

Ответ 4

Используйте эти методы

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

}

Ответ 5

UIActivityIndicatorView - это тип представления. Установите его рамку внутри вашей кнопки и используйте -addSubview, чтобы добавить ее в иерархию представления UIBarButton.

Я упрощаю, так как вам нужно попытаться сделать его подходящим для пространства (возможно, путем масштабирования) и центрировать его...

Ответ 6

pseudocode, я не собираюсь проверять это в Xcode, но что-то вроде этого должно работать:

UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init];
act.frame = CGMakeRect(3,3,25,25);
[myBarButton addSubview:act];
[act release];