Как добавить круг Spinner UIActivityIndicatorView в UIBarButton, так что, когда пользователь нажимает на одну из этих кнопок на панели навигации, они видят вращатель во время загрузки?
Добавить UIActivityIndicatorView в UIBarButton
Ответ 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];