Cómo corregir la position de MBProgressHUD para centrar en un UITableView

Tengo un escenario donde estoy usando MBProgressHUD biblioteca de terceros en un UITableViewController, pero los problemas son cada vez que me desploop hacia arriba y hacia abajo con los desplazamientos del HUD.

No quiero deshabilitar el desplazamiento de UITableView y también quiero mantener el HUD en el centro de UITableView.

¿Hay alguna forma de implementarlo?

Al agregar HUD a la super visión de tablaview o a la navigationController.view soluciona el problema:

 UIView *view = self.tableView.superview; // UIView *view = self.navigationController.view; if you are using navigationController if (view != nil) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; } 

El problema puede ser que esté agregando el HUD en tablview, así que agregue en su vista como …

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.mode = MBProgressHUDModeText; hud.labelText = @"Loading"; } 

Cree el object de MBProgressHUD (ejemplo: MBProgressHUD * HUD). Inicialícela y agregue HUD como subvista en su vista principal y haga esto

 [HUD setCenter:self.view.center]; [HUD setUserInteractionEnabled:YES]; 

Sí, hay una forma posible de arreglarlo. Antes de [HUD show:YES] , agregue este código.

 HUD.yOffset = CGRectGetMinY(self.tableView.bounds); 

y eso es.

Parece que HUD 's view.frame está configurado como su frame de supervisión, y por lo tanto, está en una position incorrecta si se desplaza hacia abajo y luego muestra HUD . Al agregar la línea, se agregará la yOffset HUD a la cantidad de desplazamiento hacia abajo.

Esto me ha funcionado. Configúrelo en parentViewController, luego en Ver.

 let spinningActivity = MBProgressHUD.showHUDAddedTo(self.parentViewController?.view, animated:true) 

Intenté agregarlo al controller de navigation como se indicó anteriormente y obtuve algunos errores de desenvolver cuando lo traduje a Swift. Encontré esta solución y funciona cada vez. Crédito a Aleksei Kaut :-).

 - (void)showLoadingIndicator { [MBProgressHUD showHUDAddedTo:[UIApplication shanetworkingApplication].keyWindow animated:YES]; } - (void)hideLoadingIndicator { [MBProgressHUD hideAllHUDsForView:[UIApplication shanetworkingApplication].keyWindow animated:YES]; } 

Swift 3.0

  override func viewDidLoad() { super.viewDidLoad() progress = MBProgressHUD(view: view) // <<-- That's the trick view.addSubview(progress!) view.bringSubview(toFront: progress!) progress?.show(animated: true) progress?.mode = .indeterminate progress?.animationType = .fade } 

Las soluciones es simple. Cuando está utilizando un tableView, simplemente adjunte el MBProgressHUD a UIApplication.shanetworking.delegate? .window

Para swift 3.0:

Para mostrar el MBProgressHUD

 MBProgressHUD.showAdded(to: ((UIApplication.shanetworking.delegate?.window)!)!, animated: true) 

Para ocultar el MBProgressHUD

 MBProgressHUD.hide(for: ((UIApplication.shanetworking.delegate?.window)!)!, animated: true)