2014-11-04 18 views
7

C'è un modo per mostrare MBProgressHUD nella parte inferiore o superiore dello schermo?Posizione MBProgressHUD nella parte inferiore/superiore dello schermo

Ho provato a impostare il frame utilizzando [hud setFrame:....];, initWithFrame e impostando la proprietà center dell'hud. Nessuno di questi ha funzionato. Ho fatto un NSLog() dei frame dopo aver provato questi metodi. I valori erano cambiati ma l'hud era ancora visualizzato al centro dello schermo.

Una cosa da notare, l'hud viene visualizzato utilizzando un UIWindow:

UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject]; 
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:window animated:YES]; 
hud.mode = MBProgressHUDModeText; 
hud.labelText = @"some text"; 

fece perché l'HUD è visualizzato da un blocco esecuzione in background, così l'HUD può essere visualizzato in ogni caso attualmente in esposizione.

risposta

16

Sì, possiamo cambiare MBProgressHUD vista posizione dal centro verso il basso o in alto.

Basta aggiungere la proprietà yOffset dello MBProgressHUD e si otterrà la posizione esatta che si desidera.

Usa:

MBProgressHUD *Hud = [[MBProgressHUD alloc] init]; 
hud.yOffset = 250.0; //For bottom location. 
+0

Sì, questo funziona. Grazie. – kRiZ

1

Ho avuto lo stesso problema con un SVProgressHUD risulta ho dovuto aggiungere un nuovo metodo

+ (void)setOffsetFromCenter:(UIOffset)offset { 
[self sharedView].offsetFromCenter = offset; 
} 

e chiamare quando ho mostrato l'HUD

[SVProgressHUD setOffsetFromCenter:UIOffsetMake(0, 120)]; 

miniera dovuto andare appena un un po 'più in basso rispetto a metà schermo. Provalo, è un SingleTon quindi è più facile chiamare show e remove.

+1

Grazie, ma avrei dovuto fare un sacco di modifiche al MBProgressHUD per questo al lavoro. Non posso fare cambiamenti visto che sto usando i pod. – kRiZ

+0

Gli stati di risposta in alto si possono cambiare, devo raccomandare di usare questo singleton. –

0

No la sua non posible cambiare la posizione di MBProgressHUD verso l'alto o bottom.refer questo link

0

possiamo cambiare posizione MBProgressHUD tramite cambiamento yOffset e xOffset. La riga inferiore di codice è per il posto MBProgressHUD nella parte inferiore.

let hud = MBProgressHUD.showAdded(to: view, animated: true) 
hud?.mode = .text 
hud?.labelText = json!["message"] as! String 
hud?.yOffset = Float(view.frame.size.height*2/5); 
hud?.removeFromSuperViewOnHide = true 
hud?.margin = 10.0 
hud?.hide(true, afterDelay: 2) 
0

per Swift 4, cambiato hud.offset.x e hud.offset.y

let hud = MBProgressHUD.showAdded(to: self.view, animated: true) 
hud.mode = MBProgressHUDMode.annularDeterminate 
hud.offset.y = 10 
hud.offset.x = 10 
Problemi correlati