在我的iPhone应用程序中,我希望(需要)监视设备方向的变化,以重新排列屏幕上的某些部分。我使用的方法是使用
到目前为止,所有测试都是在纵向模式下进行的,所以我可以专注于编程主要功能,稍后只需进行一些横向调整即可。这里出现了问题:
以下是一些记录输出:
我做错了什么?我用于调试的代码如下。
CGRect frame = [UIScreen mainScreen].applicationFrame
获取屏幕大小,然后计算其他控件的大小和/或定位(我也尝试过self.view.frame
)。到目前为止,所有测试都是在纵向模式下进行的,所以我可以专注于编程主要功能,稍后只需进行一些横向调整即可。这里出现了问题:
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
中,我添加了一些日志记录来检查大小,但显然宽度和高度的值是“错误”的(我说“错误”是因为初看这些值对我来说似乎不合理)。以下是一些记录输出:
- Rotation: Landscape [w=300.000000, h=480.000000]
- Rotation: Portrait [w=320.000000, h=460.000000]
我做错了什么?我用于调试的代码如下。
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = [UIScreen mainScreen].applicationFrame;
CGSize size = frame.size;
NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",
UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
size.width, size.height]);
}
self.view.bounds
(考虑到“self.view”是主视图,其他子视图将被添加以组成应用程序),我会得到预期的值。现在我想起了斯坦福iPhone Dev课程中在iTues U上讨论过的某些内容,但我不确定它是否相关。无论如何,我仍然希望得到更具体的意见。 - Rafael Steilself.view.frame
就可以正常工作,但如果没有,看起来您必须使用self.view.bounds
。 - Rob