iphone - Agregue UIActivityIndicatorView en UIBarButton
uinavigationbar (6)
¿Cómo agrego un círculo giratorio UIActivityIndicatorView en un UIBarButton, de modo que cuando un usuario toca uno de esos botones en la barra de navegación, ve un spinner mientras se realiza la carga?
En realidad, el indicador de actividad no se agrega como elemento de la barra de herramientas. Es una subvista de la vista actual.
UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[act setCenter:CGPointMake(20, 20)];
[act startAnimating];
[self.view addSubview:act];
Recuerde liberarlo en -(void)dealloc
.
UIActivityIndicatorView es un tipo de vista. Establezca su marco para que esté dentro de su botón y use -addSubview para agregarlo a la jerarquía de vistas del UIBarButton.
Estoy simplificando demasiado, ya que tienes que intentar que se ajuste al espacio (posiblemente escalando) y centrarlo ...
Usa estos métodos
-(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;
}
pseudocódigo, no voy a verificar esto en Xcode, pero algo así debería funcionar:
UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init];
act.frame = CGMakeRect(3,3,25,25);
[myBarButton addSubview:act];
[act release];
Si intenta mostrar la rueda de actividad en un botón de la barra de navegación (por ejemplo, puede tener un botón de actualización en su barra de navegación), puede crear un nuevo UIBarButtonItem
con una vista personalizada que sea UIActivityIndicatorView
:
C objetivo
uiBusy = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
uiBusy.hidesWhenStopped = YES;
[uiBusy startAnimating];
[self.navigationItem.rightBarButtonItem initWithCustomView:uiBusy];
Rápido
let uiBusy = UIActivityIndicatorView(activityIndicatorStyle: .White)
uiBusy.hidesWhenStopped = true
uiBusy.startAnimating()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: uiBusy)
Esto sobrescribe su rightBarButtonItem
con la rueca. Cuando haya terminado, simplemente recree el rightBarButtonItem
.
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.hidesWhenStopped = YES;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
Coloque lo siguiente donde sea necesario:
[activityIndicator startAnimating];
[activityIndicator stopAnimating];