2014-11-04 16 views
7

Gibt es eine Möglichkeit, die MBProgressHUD am unteren oder oberen Bildschirmrand anzuzeigen?Position MBProgressHUD am unteren/oberen Bildschirmrand

Ich habe versucht, den Rahmen unter Verwendung [hud setFrame:....];, initWithFrame, und Einstellung der center Eigenschaft des hud. Keine von diesen hat funktioniert. Ich habe einen NSLog() der Frames nach dem Ausprobieren dieser Methoden gemacht. Die Werte hatten sich geändert, aber der Hud wurde immer noch in der Mitte des Bildschirms angezeigt.

Eine Sache zu beachten, das HUD mit einem UIWindow angezeigt:

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

tat dies, weil die hud von einem Hintergrundausführungsblock angezeigt wird, so könnte das HUD in der Anzeige zur Zeit auf einem beliebigen Ansicht angezeigt werden.

Antwort

16

Ja, wir können MBProgressHUD Aussichtslage von der Mitte nach unten oder oben verändern.

Fügen Sie einfach die yOffset Eigenschaft der MBProgressHUD hinzu und Sie erhalten den genauen Standort, den Sie wollen.

Verwendung:

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

Ja, das funktioniert. Vielen Dank. – kRiZ

1

Ich hatte das gleiche Problem mit einem SVProgressHUD stellt sich heraus, musste ich einfach eine neue Methode

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

hinzufügen und es nennen, wenn ich das HUD zeigte

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

-Mine hatte nur gehen etwas niedriger als der mittlere Bildschirm. Probieren Sie es aus, es ist ein SingleTon, so dass es einfacher ist, die Show aufzurufen und zu entfernen.

+1

Danke, aber ich hätte viele Änderungen an MBProgressHUD für diese Arbeit zu machen. Ich kann keine Änderungen mehr vornehmen, seit ich Pods verwende. – kRiZ

+0

Top Antwort besagt, dass Sie das ändern können, ich muss Ihnen empfehlen, dieses Singleton zu verwenden. –

0

Nein es ist nicht posible die Position MBProgressHUD ändern nach oben oder bottom.refer diese link

0

Wir können in yOffset und xOffset Position MBProgressHUD über Änderung ändern. Die folgende Zeile des Codes steht für den Platz MBProgressHUD unten.

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

für Swift 4, geändert hud.offset.x und hud.offset.y

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