Window和View的关系
因为Window是用来管理View的,所以Window上自然是可以AddSubView的.有些时候,我们会想在UIViewController上加一些自定的Alert窗口,比如网络请求的时候.
如果我把Alert添加到每个ViewController里,或者放在某个BaseViewController里,如果我把这个ViewController作为子ViewController加入到另一个ViewController里,就会产生AlertView的偏移.如图
如图所示,左边的才是想要的效果,右边的仅仅是白色的部分一个子ViewController里显示了Alert提示,所以产生了偏移.
两段代码有什么不同呢
+ (instancetype)showHUDAddedTo:(UIView *)view animated:(BOOL)animated{
MBProgressHUD *hud = [[self alloc] initWithView:view];
hud.removeFromSuperViewOnHide = YES;
[view addSubview:hud];
[hud show:animated];
return hud;
}
左边的使用KeyWindow调用
[self showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:animated];
右边的使用的是某个UIViewController
[self showHUDAddedTo:self.view animated:YES];