Поместите MBProgressHUD в нижней / верхней части экрана

Есть ли способ заставить MBProgressHUD показывать внизу или вверху экрана?

Я попытался установить кадр, используя [hud setFrame:....];, initWithFrameи настройкаcenter собственность худ. Ничто из этого не сработало. Я сделал NSLog() фреймов после попытки этих методов. Значения изменились, но hud по-прежнему отображается в центре экрана.

Следует отметить, что hud отображается с помощью UIWindow:

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

Сделано это потому, что экран отображается блоком фонового выполнения, поэтому экран может отображаться в любом представлении, отображаемом в данный момент.

5 ответов

Решение

Да, мы можем изменить MBProgressHUD Просмотр местоположения от центра к нижней или верхней части.

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

Используйте:

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

У меня была такая же проблема с SVProgressHUD получается, мне просто нужно было добавить новый метод

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

и позвоните, когда я показал HUD

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

Мой просто должен был пойти чуть ниже середины экрана. Попробуйте, это SingleTon, так что проще вызвать шоу и удалить.

Мы можем изменить положение 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)

Для 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

Нет, невозможно изменить положение MBProgressHUD на верх или низ. Ссылка на эту ссылку

Другие вопросы по тегам