有没有办法让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可以显示在当前显示的任何视图上。
答案 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)
我们可以通过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)
答案 3 :(得分:0)
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
答案 4 :(得分:-1)
不能将MBProgressHUD的位置更改为顶部或底部。请参阅此link