将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顶部或底部的位置。推荐此链接
我们可以通过改变yOffset
和xOffset
来改变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)