Indicador de actividad con image personalizada

Estoy cargando un UIWebView y, mientras tanto, no quiero mostrar una página en blanco con esto hilandero indicador de actividad girando (indicador de actividad siri). Por lo que tengo entendido, no puedes cambiar la image, pero ¿no puedo usar esa image y crear una animation girando 360 ° y haciendo un bucle? ¿O eso agotará la batería?

¿algo como esto?:

 - (void)webViewDidStartLoad:(UIWebView *)webView { //set up animation [self.view addSubview:self.loadingImage]; //start animation } - (void)webViewDidFinishLoad:(UIWebView *)webView { //stop animation [self.loadingImage removeFromSuperview]; } 

¿Que debería hacer?

¡Gracias por adelantado!

La mayor parte de esto se encuentra en Stack Overflow. Permítanme resumir:

Cree un UIImageView que servirá como un indicador de actividad (dentro de la escena del guión gráfico, NIB, código … donde lo desee). Llamémoslo _activityIndicatorImage

Cargue su image: _activityIndicatorImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"activity_indicator"]];

Necesitas usar animation para rotarla. Aquí está el método que uso:

 + (void)rotateLayerInfinite:(CALayer *)layer { CABasicAnimation *rotation; rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; rotation.fromValue = [NSNumber numberWithFloat:0]; rotation.toValue = [NSNumber numberWithFloat:(2 * M_PI)]; rotation.duration = 0.7f; // Speed rotation.repeatCount = HUGE_VALF; // Repeat forever. Can be a finite number. [layer removeAllAnimations]; [layer addAnimation:rotation forKey:@"Spin"]; } 

Dentro de mi método de presentación, inicie la rotation. Puede colocar esto en su webViewDidStartLoad y webViewDidFinishLoad si esto es mejor para su caso:

 - (void)layoutSubviews { [super layoutSubviews]; // some other code [Utils rotateLayerInfinite:_activityIndicatorImage.layer]; } 

Siempre podrías detener la rotation con [_activityIndicatorImage.layer removeAllAnimations];

Puedes usar este hermoso cargador inspirado en la aplicación de Tumblr :
Asich / AMTumblrHud

Sin image, puede usar una biblioteca de terceros

para el objective C (también compatible con iOS 6) https://github.com/shebinkoshy/UIControllsRepo

para https://github.com/shebinkoshy/Activity-Indicator-Swift

Ventajas

-> Capaz de establecer colors para spinner

-> Disponible en diferentes tamaños como pequeño, pequeño, mediano, grande, muy grande

-> Capaz de establecer el título (centro y abajo) para tamaños medianos, grandes y muy grandes

Puede establecer una image en su activityIndicator . Creé una function para agregar image personalizada a activityIndicator. Esto es lo que creé.

 public func showProgressView(view: UIView) -> UIImageView { let containerView = UIView() let progressView = UIView() var activityIndicatorImageView = UIImageView() if let statusImage = UIImage(named: Constants.ActivityIndicatorImageName1) { let activityImageView = UIImageView(image: statusImage) containerView.frame = view.frame containerView.backgroundColor = UIColor(hex: 0xffffff, alpha: 0.3) progressView.frame = CGRectMake(0, 0, 80, 80) progressView.center = CGPointMake(view.bounds.width / 2, view.bounds.height / 2) progressView.backgroundColor = UIColor(hex: 0x18bda3, alpha: 0.7) progressView.clipsToBounds = true progressView.layer.cornerRadius = 10 activityImageView.animationImages = [UIImage(named: Constants.ActivityIndicatorImageName1)!, UIImage(named: Constants.ActivityIndicatorImageName2)!, UIImage(named: Constants.ActivityIndicatorImageName3)!, UIImage(named: Constants.ActivityIndicatorImageName4)!, UIImage(named: Constants.ActivityIndicatorImageName5)!] activityImageView.animationDuration = 0.8; activityImageView.frame = CGRectMake(view.frame.size.width / 2 - statusImage.size.width / 2, view.frame.size.height / 2 - statusImage.size.height / 2, 40.0, 48.0) activityImageView.center = CGPointMake(progressView.bounds.width / 2, progressView.bounds.height / 2) dispatch_async(dispatch_get_main_queue()) { progressView.addSubview(activityImageView) containerView.addSubview(progressView) view.addSubview(containerView) activityIndicatorImageView = activityImageView } } return activityIndicatorImageView } 

Puede llamar a este método en cualquier parte de su código. Y simplemente llame al método startAnimating . Si desea ocultar, simplemente llame al método stopAnimating .