【问题标题】:Storyboard, NavigationController, Landscape Orientation and Scrollview CoordinateStoryboard、NavigationController、横向和滚动视图坐标
【发布时间】:2012-08-21 20:40:14
【问题描述】:

我遇到了一个由我不明白的方向魔法引起的问题。 首先,我使用的是加载 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

【问题讨论】:

  • 所以你想锁定横向吗?
  • 有没有试过在viewWillApper:animated:方法中实现scrollView的所有自定义?
  • @FaddishWorm,是的,它只是风景,这不是问题。视图的框架搞砸了。
  • @AalokParikh,这解决了问题。坦克你!
  • @zeiteisen 我已发表我的评论作为答案。请接受它作为接受的答案:)

标签: ios orientation uistoryboard


【解决方案1】:

我认为在计算帧的 x 时通常必须考虑方向,这就是它们具有变换的原因? iPhone SDK: Orientation (Landscape and Portrait views)

简单地在框架中查询 X 值并不总能得到准确的结果。

【讨论】:

    【解决方案2】:

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

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

    快乐编码:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      相关资源
      最近更新 更多