Позиционирайте MBProgressHUD в долната/горната част на екрана

Има ли начин MBProgressHUD да се показва в долната или горната част на екрана?

Опитах да настроя рамката с помощта на [hud setFrame:....];, initWithFrame и да настроя свойствотоcenter на hud. Нито едно от тези не работи. Направих NSLog() на кадрите, след като изпробвах тези методи. Стойностите се бяха променили, но hud все още се показваше в центъра на екрана.

Нещо, което трябва да се отбележи, hud се показва с помощта на UIWindow:

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

Направи това, защото hud се показва от блок за изпълнение на заден план, като по този начин hud може да се показва на всеки изглед, който се показва в момента.


person kRiZ    schedule 04.11.2014    source източник


Отговори (5)


Да, можем да променим MBProgressHUD местоположението на изгледа от центъра към долната или горната част.

Просто добавете свойството yOffset на MBProgressHUD и ще получите точното местоположение, което искате.

Използвайте:

MBProgressHUD *Hud = [[MBProgressHUD alloc] init];
hud.yOffset = 250.0; //For bottom location.
person Gautam Sareriya    schedule 26.11.2014
comment
За Swift 4 hud.yOffset е отхвърлен. Вместо това използвайте hud.offset.y. - person user3911483; 05.06.2018

Имах същия проблем с SVProgressHUD, оказа се, че просто трябваше да добавя нов метод

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

и го извикайте, когато показах HUD

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

Моят просто трябваше да слезе малко по-ниско от средата на екрана. Изпробвайте го, това е SingleTon, така че е по-лесно да се обадите за показване и премахване.

person Marcos Griselli    schedule 04.11.2014
comment
Благодаря, но ще трябва да направя много промени в MBProgressHUD, за да работи това. Не мога да правя промени, тъй като използвам pods. - person kRiZ; 05.11.2014
comment
Най-горният отговор гласи, че можете да промените това, трябва да ви препоръчам да използвате този сингълтон. - person Marcos Griselli; 05.11.2014

Можем да променим позицията на MBProgressHUD чрез промяна в yOffset и xOffset. Долният ред от код е за място MBProgressHUD в долната част.

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)
person Payal Maniyar    schedule 22.12.2017

за Swift 4, променено hud.offset.x и hud.offset.y

let hud = MBProgressHUD.showAdded(to: self.view, animated: true)
hud.mode = MBProgressHUDMode.annularDeterminate
hud.offset.y = 10
hud.offset.x = 10
person SwiftDeveloper    schedule 11.01.2018

Не, не е възможно да промените позицията на MBProgressHUD нагоре или надолу. Вижте този връзка

person poojathorat    schedule 04.11.2014