我正面临一个问题,这个问题是由我不理解的方向魔法引起的。 首先,我使用的是一个加载ViewController的NavigationController。在这个ViewController中是一个ScrollView。当我询问ScrollView的位置时,我得到错误的数据。例如:界面构建器中ScrollView的x坐标为90。如果我以编程方式获取ScrollView的帧,则返回280。 应用程序中的所有内容都设置为横向。在Info.plist中,在摘要中,在ViewControllers的实现中,在界面构建器中。
我做了一些截图。也许他们帮助找出错误。
每个ViewController都有:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
如果我从Storyboard中删除NavigationController并将模拟的指标保留为推断,那么第一个ViewController会在Storyboard中切换到纵向。
当我从NavigationController记录视图的大小时,它是纵向的
NSLog(@"frame %@", NSStringFromCGRect(self.view.frame));
输出为768x1024
答案 0 :(得分:1)
我认为当你计算一帧的x时,你通常不得不考虑方向,这就是为什么他们有变换? iPhone SDK: Orientation (Landscape and Portrait views)
简单地查询框架的X值并不总能给出准确的结果。
答案 1 :(得分:0)
问题是使用的方法,即viewDidLoad:
方法。那时还没有绘制子视图,也没有初始化帧,所以问题是一致的。
而不是使用viewDidLoad:
使用viewWillAppear:animated:
或viewDidAppear:animated:
将为您解决问题。
快乐编码:)