在viewDidLoad中,我最初打印UIView边界的高度和宽度,就像这样
-(void) viewDidLoad
{
NSLog(@"WxH = %fx%f", self.view.bounds.size.width,self.view.bounds.size.height);
}
打印:WxH = 320.000000x548.000000
现在,假设我将View控制器旋转到横向 - 然后再回到纵向,并打印相同的高度和宽度。像这样:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)x
duration:(NSTimeInterval)duration
{
// If the orientation is rotating to Portrait mode...
if (UIInterfaceOrientationIsPortrait(x))
{
NSLog(@"WxH = %fx%f", self.view.bounds.size.width,self.view.bounds.size.height);
}
else // If the orientation is rotating to Landscape mode
{
}
}
在此之后,每次旋转时,上面的方法都会打印WxH = 320.000000x460.000000
(即使我处于纵向模式,因为我打印时打印548)
为什么高度变为460? (然后它一直保持这样)
答案 0 :(得分:0)
纵向iphone身高总共480,状态栏为20,其余为460. self .view。
您可以更好地查看日志
NSLog(@"%@",NSStringFromCGRect(self.view.bounds));
看起来是因为
分辨率以点为单位,而不是像素。您的代码应使用点,以便它可以在任何设备上运行 - 视网膜或非视网膜。 (为了澄清 - 在视网膜显示器上,每个屏幕像素为0.5x0.5点,在非视网膜上,像素是该尺寸的两倍,1x1点)
答案 1 :(得分:0)
不要在ViewDidLoad中获取/设置边界/大小,而是在ViewWillAppear中执行代码。
这不是一个“技术性”的答案,但它为我做了工作。