【发布时间】:2016-05-19 07:01:10
【问题描述】:
我在 iPad mini/iPad 4 和 iPad Pro 的视图中显示 HUD 时遇到问题。它不会像它应该的那样去中心。而且我认为,这是我的 .xib 大小的问题。这取决于模拟的指标设置。
我尝试使用模拟指标设置 .xib,
1. iPad 全屏
我将 .xib 设置为 iPad 全屏,
如果我作为源代码打开,它会给我 1024 x 704 的分辨率。
<rect key="frame" x="0.0" y="64" width="1024" height="704"/>
然后我在 iPad 上运行它,我的 HUD 就应该居中。但如果我在 iPad Pro 上运行,我的 HUD 也不会居中。看起来我的 HUD 仍在 1024 x 704 的中心。
2。 iPad Pro 全屏
我尝试使用 iPad Pro 全屏设置 .xib
它给了我 1366 x 960 的分辨率
<rect key="frame" x="0.0" y="64" width="1366" height="960"/>
然后我在 iPad Pro 上运行它,我的 HUD 应该是居中的。但如果我在 iPad 上运行,我的 HUD 也不会居中。看起来我的 HUD 仍在 1366 x 960 的中心。
我不认为模拟指标的设置会影响我的 HUD 问题,正如它所说的 here。我正在使用JGProgressHUD btw,这是我展示 HUD 的方式。
HUD = [JGProgressHUD progressHUDWithStyle:JGProgressHUDStyleDark];
HUD.textLabel.text = NSLocalizedString(@"MISC_LOADING_DATA", nil);
[HUD showInView:self.view];
此 HUD 将自动以 self.view 为中心,我认为重要的是我的 .xib 大小。我的问题是,我应该如何设置 .xib 大小以使我的 HUD 在 iPad 和 iPad Pro 上居中?
任何帮助将不胜感激。谢谢。
更新
我的问题是viewDidLoad 上的self.view.bounds.size 值与某些方法的完成处理程序上的self.view.bounds.size 不同。
- (void)viewDidLoad {
[super viewDidLoad];
// first print
NSLog(@"Height: %f", self.view.bounds.size.height);
NSLog(@"Width: %f", self.view.bounds.size.width);
[self generateData:^(BOOL result) {
if (HUD.superview) {
[HUD dismiss];
// 2nd print on completion handler
NSLog(@"Height: %f", self.view.bounds.size.height);
NSLog(@"Width: %f", self.view.bounds.size.width);
}
}];
}
我在 iPad Pro 上运行。在第一次打印时,它给了我
2016-05-19 16:39:31.529 hr-akses[34013:1535416] Height: 704.000000
2016-05-19 16:39:31.529 hr-akses[34013:1535416] Width: 1024.000000
但在第二次打印时,它给了我
2016-05-19 16:39:31.607 hr-akses[34013:1535416] Height: 960.000000
2016-05-19 16:39:31.607 hr-akses[34013:1535416] Width: 1366.000000
。 .
已解决
正如Luke Smith 所说,viewDidLoad 的自动布局很可能还没有完成。我在viewWillAppear 上初始化了我的HUD,它解决了我的问题。
【问题讨论】:
标签: ios objective-c ipad