Position MBProgressHUD at the Bottom/Top of the screen

断了今生、忘了曾经 提交于 2019-11-28 00:11:29

问题


Is there a way to make the MBProgressHUD show at the bottom or top of the screen?

I have tried setting the frame using [hud setFrame:....];, initWithFrame, and setting thecenter property of the hud. None of these worked. I did an NSLog() of the frames after trying these methods. The values had changed but the hud still displayed at the center of the screen.

A thing to note, the hud is displayed using a UIWindow:

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

Did this because the hud is displayed by a background execution block, thus the hud could be displayed on any view currently in display.


回答1:


Yes, we can change MBProgressHUD view location from center to the bottom or top.

Just add the yOffset property of the MBProgressHUD and you will get the exact location that you want.

Use :

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



回答2:


I had the same trouble with a SVProgressHUD turns out I just had to add a new method

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

and call it when I showed the HUD

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

Mine just had to go a bit lower than mid-screen. Try it out, its a SingleTon so it's easier to call show and remove.




回答3:


We can change position of MBProgressHUD via change in yOffset and xOffset. Below line of code is for place MBProgressHUD at bottom.

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)



回答4:


for Swift 4 , changed hud.offset.x and hud.offset.y

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



回答5:


No its not posible to change the position of MBProgressHUD to top or bottom.refer this link



来源:https://stackoverflow.com/questions/26728060/position-mbprogresshud-at-the-bottom-top-of-the-screen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!