IOS7:UINavigationController中的UIScrollView偏移量

目前我正在将我的应用程序迁移到ios 7上,并且我一直在新的navigationcontroller / bar管理上停留了好几个小时。

之前,当我们有一个导航控制器时,我们有一个像这样的代码片段:

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];

在界面构建器中,我们可以选择为视图设置现有导航栏,并且所有内容都与实际视图的内容相匹配。

好吧,现在,我不知道如何正确使用界面生成器进行设计。 我仍然有我的片段来初始化我的navcontroller。 然而,在我的MainViewController的界面生成器中,如果我将状态栏设置为半透明或不透明的导航栏,则顶部的偏移量为44px(请参见下文)。


Interface Builder __________________________结果


现在,如果我将状态栏设置为none,顶部没有偏移量,但由于导航栏导致模拟器上的视图更小,因此界面构建器中视图的底部被切断。

Interface Builder __________________________结果

我想我在这里真的错过了一些东西,但在iOS7转换指南中找不到任何主题或苹果信息。

谢谢你的帮助


编辑

正如我们在图片中看到的那样,视图的第一个孩子是一个包含两个标签的UIScrollView,当没有滚动视图时,问题不会出现。 它也出现,如果它是一个UITableView。 如果标签位于UIScrollView之外,则该标签没有偏移量。


好,所以我找到了解决方案,我在我的控制器中设置了属性:

self.automaticallyAdjustsScrollViewInsets = false

我不明白这个属性的真正好处,但是(或者为什么默认值是真的)

我发现的唯一文件是在那里:

  • https://web.archive.org/web/20160405135605/https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html
  • https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
  • 更新

    在iOS中11 automaticallyAdjustsScrollViewInsets已被弃用

    你现在应该使用:

    self.tableView.contentInsetAdjustmentBehavior = .never
    

    我也鼓励你检查这个问题及其答案,以更好地理解这些属性


    @ Justafinger的回答对我来说也是一种魅力。

    只是想补充一点,该设置也可以通过界面构建​​器轻松调整。

  • 选择你的视图控制器
  • 点击“属性检查器”标签
  • 取消选中“调整滚动查看插图”
  • 请享用!
  • 在这里输入图像描述


    我遇到了同样的问题,但是我在界面生成器中的ViewController上发现了一个相当奇怪的属性,这似乎是造成这种情况的原因。 有一个“Extend Edges”复选框。 我删除了“顶部酒吧”检查,并且所有事情都开始为我正确布置。

    链接地址: http://www.djcxy.com/p/90315.html

    上一篇: IOS7 : UIScrollView offset in UINavigationController

    下一篇: Navigation bar appear over the views with new iOS7 SDK