故事板,NavigationController,横向方向和Scrollview坐标

时间:2012-08-21 11:17:07

标签: ios orientation uistoryboard

我正面临一个问题,这个问题是由我不理解的方向魔法引起的。 首先,我使用的是一个加载ViewController的NavigationController。在这个ViewController中是一个ScrollView。当我询问ScrollView的位置时,我得到错误的数据。例如:界面构建器中ScrollView的x坐标为90。如果我以编程方式获取ScrollView的帧,则返回280。 应用程序中的所有内容都设置为横向。在Info.plist中,在摘要中,在ViewControllers的实现中,在界面构建器中。

我做了一些截图。也许他们帮助找出错误。

Settings in the summary

Frame in the interface builder of the ScrollView

Frame in the implementation where bar is different from the interface builder

The settings of the ViewController who contain the ScrollView

每个ViewController都有:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

如果我从Storyboard中删除NavigationController并将模拟的指标保留为推断,那么第一个ViewController会在Storyboard中切换到纵向。

当我从NavigationController记录视图的大小时,它是纵向的

NSLog(@"frame %@", NSStringFromCGRect(self.view.frame));

输出为768x1024

2 个答案:

答案 0 :(得分:1)

我认为当你计算一帧的x时,你通常不得不考虑方向,这就是为什么他们有变换? iPhone SDK: Orientation (Landscape and Portrait views)

简单地查询框架的X值并不总能给出准确的结果。

答案 1 :(得分:0)

问题是使用的方法,即viewDidLoad:方法。那时还没有绘制子视图,也没有初始化帧,所以问题是一致的。

而不是使用viewDidLoad:使用viewWillAppear:animated:viewDidAppear:animated:将为您解决问题。

快乐编码:)