Поместите 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