2014-11-04 110 views
7

有没有办法在屏幕的底部或顶部进行MBProgressHUD显示?位置MBProgressHUD在屏幕的底部/顶部

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

甲一点要注意,在HUD使用的UIWindow显示:

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

这样做是因为在HUD由后台执行块显示,因此,HUD可以当前在显示器的任何视图中显示。

回答

16

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

只需添加的yOffset财产,你将得到你想要的确切位置。

用途:

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

是的,这有效。谢谢。 – kRiZ 2014-11-27 00:49:23

1

我有同样的烦恼与SVProgressHUD原来我只是添加新的方法

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

,并调用它,当我发现了HUD

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

矿刚刚走了位低于屏幕中间位。尝试一下,它是一个SingleTon,所以更容易调用show和remove。

+1

谢谢,但我不得不做出很多改变MBProgressHUD这个工作的。自从使用pod后,无法进行更改。 – kRiZ 2014-11-04 21:58:55

+0

最佳答案状态你可以改变,我必须建议你使用这个单身人士。 – 2014-11-04 22:58:45

0

没有它不是更多钞票来改变MBProgressHUD的位置顶部或bottom.refer这link

0

我们可以在yOffsetxOffset通过改变而改变的MBProgressHUD位置。 下面的代码行是放置在底部的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) 
0

斯威夫特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