2014-11-04 13 views
7

Czy istnieje sposób, aby uruchomić program MBProgressHUD u dołu lub u góry ekranu?Pozycja MBProgressHUD u dołu/u góry ekranu

Próbowałem ustawić ramki za pomocą [hud setFrame:....];, initWithFrame i ustawienie właściwości center hud. Żadne z nich nie działało. Zrobiłem NSLog() ramek po wypróbowaniu tych metod. Wartości zmieniły się, ale hud nadal wyświetlał się na środku ekranu.

Rzecz zauważyć, HUD jest wyświetlany przy użyciu UIWindow:

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

Czy to dlatego, że HUD jest wyświetlany przez blok wykonania tła, więc HUD mogą być wyświetlane na dowolnym widoku obecnie w wyświetlaczu.

Odpowiedz

16

Tak, możemy zmienić MBProgressHUD Położenie obiektu od środka na dole lub na górze.

Wystarczy dodać właściwość yOffset z MBProgressHUD, aby uzyskać dokładną lokalizację.

Zastosowanie:

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

Tak, to działa. Dzięki. – kRiZ

1

miałem ten sam problem z SVProgressHUD okazuje się po prostu musiałem dodać nową metodę

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

i nazywają to kiedy pokazałem HUD

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

Mine prostu musiałem pójść nieco niższy niż średni ekran. Wypróbuj to singlet, dzięki czemu łatwiej wywołać show i usunąć.

+1

Dzięki, ale będę musiał dokonać wielu zmian MBProgressHUD to zadziałało. Nie mogę wprowadzać zmian, ponieważ używam pods. – kRiZ

+0

Najlepsza odpowiedź mówi, że możesz to zmienić, muszę polecić użycie tego singletonu. –

0

Nie jej nie posible zmienić pozycję MBProgressHUD do góry lub bottom.refer to link

0

Możemy zmienić pozycję MBProgressHUD poprzez zmiany w yOffset i xOffset. Poniższa linia kodu jest dla miejsca MBProgressHUD u dołu.

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

dla Swift 4, zmienił hud.offset.x i hud.offset.y

let hud = MBProgressHUD.showAdded(to: self.view, animated: true) 
hud.mode = MBProgressHUDMode.annularDeterminate 
hud.offset.y = 10 
hud.offset.x = 10 
Powiązane problemy