将MBProgressHUD放置在屏幕的底部/顶部

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

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

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

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

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

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

只需添加yOffset属性,您将获得所需的确切位置。

使用 :

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

我有一个SVProgressHUD相同的麻烦事实certificate我只是不得不添加一个新的方法

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

并在我展示HUD时调用它

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

我不得不比中间屏幕低一点。 尝试一下,它是一个SingleTon,所以更容易调用show和remove。

没有它不可能改变的MBProgressHUD顶部或底部的位置。推荐此链接

我们可以通过改变yOffsetxOffset来改变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)