0

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

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

摘要中的设置

ScrollView 的界面构建器中的框架

实现中的框架,其中 bar 与界面构建器不同

包含 ScrollView 的 ViewController 的设置

每个 ViewController 都有这个:

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

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

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

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

输出为 768x1024

4

2 回答 2

1

我认为当您从框架计算 x 时,通常必须考虑方向,这就是它们具有变换的原因?iPhone SDK:方向(横向和纵向视图)

简单地在框架中查询 X 值不会总是给你准确的结果。

于 2012-08-21T12:04:21.930 回答
0

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

而不是使用viewDidLoad:使用viewWillAppear:animated:orviewDidAppear:animated:会为你解决问题。

快乐编码:)

于 2012-08-21T12:40:14.077 回答