将MBProgressHUD置于屏幕的底部/顶部

时间:2014-11-04 05:02:44

标签: ios mbprogresshud

有没有办法让MBProgressHUD显示在屏幕的底部或顶部?

我尝试使用[hud setFrame:....];initWithFrame设置框架,并设置hud的center属性。这些都没有奏效。尝试这些方法后,我做了帧的NSLog()。值已更改,但hud仍显示在屏幕中央。

需要注意的是,使用UIWindow显示hud:

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

这是否因为hud由后台执行块显示,因此hud可以显示在当前显示的任何视图上。

5 个答案:

答案 0 :(得分:18)

是的,我们可以将MBProgressHUD视图位置从中心更改为底部或顶部。

只需添加yOffset的{​​{1}}属性即可获得所需的确切位置。

使用:

MBProgressHUD

答案 1 :(得分:1)

我遇到同样的问题SVProgressHUD结果我只需要添加一个新方法

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

并在我展示HUD时调用它

[SVProgressHUD setOffsetFromCenter:UIOffsetMake(0, 120)];
我不得不比屏幕中间低一点。试一试,它是一个SingleTon,所以它更容易调用show和remove。

答案 2 :(得分:0)

我们可以通过MBProgressHUDyOffset中的更改来更改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)

答案 3 :(得分:0)

Swift 4 ,更改hud.offset.xhud.offset.y

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

答案 4 :(得分:-1)

不能将MBProgressHUD的位置更改为顶部或底部。请参阅此link