ios:改变方向后UIView的宽度和高度是不准确的?

时间:2013-04-19 17:14:05

标签: iphone ios objective-c uiview orientation-changes

我正在尝试确保即使在方向更改后我的自定义UIView始终位于屏幕的中心。

所以我试着用我的UIView的超级视图做一些数学运算,这是我程序的主视图(所以它占用整个屏幕)。

我注意到在方向改变后打印超视图的框架的宽度和高度时,它的宽度和高度在第一次旋转后没有改变,然后不是我预期的。

出乎意料的是,当设备处于纵向模式时,宽度= 480,高度= 320.当设备处于横向模式时,宽度= 320,高度= 480.

我从这里得到这些数字:

CGRect sFrame = [self superview].frame;
NSLog(@"width = %f, height = %f", sFrame.size.width, sFrame.size.height);

这是我的自定义UIView。

superview的帧是不是会自动更新?如果没有,我应该在哪里获得准确的宽度和高度?有更好的方法吗?

非常感谢!

1 个答案:

答案 0 :(得分:5)

使用autoresizingMask

view.center = view.superview.center;
view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin |  UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;

然后你不必再写任何代码了