IOS7:UINavigationController中的UIScrollView偏移

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

之前,当我们有一个导航控制器,我们有这样一个片段:

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

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

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

界面生成器__________________________结果

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

界面生成器__________________________结果

我想我真的在这里失去了一些东西,但我无法find任何主题或苹果的信息在iOS7转换指南。

谢谢你的帮助

编辑

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

好,所以我find了解决scheme,我已经在我的控制器中设置了属性:

 self.automaticallyAdjustsScrollViewInsets = false 

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

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

更新

在iOS 11中,不推荐使用AdjustsScrollViewInsets

你现在应该使用:

 self.tableView.contentInsetAdjustmentBehavior = .never 

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

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

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

  1. select你的视图控制器
  2. 点击“属性检查器”选项卡
  3. 取消选中“调整滚动查看插图”
  4. 请享用!

在这里输入图像说明

我遇到了同样的问题,但是我在界面生成器的ViewController中发现了一个相当奇怪的属性,这个属性似乎对我造成了这个问题。 有一个“Extend Edges”checkbox。 我删除了“顶部酒吧”检查,一切都开始适合我。

自动调整滚动视图集设置为YES(默认设置)时,ios6和ios7之间的滚动视图定位不匹配,因此要使它们保持一致,您需要禁用此设置。 但是,如果ios6自动遇到了AdjustsScrollViewInsets,那么它会崩溃,所以您需要自动执行以ios7为条件的AdjustsScrollViewInsets,或者使用storyboard / NIBclosures选项

我有一个类似的问题,closuresviewController后,我的tableView的contentOffset被更改为(0,-64)。

我的解决scheme有点奇怪,我尝试了所有其他的答案,但没有成功,唯一解决我的问题是切换.xib控件树中的tableView位置

这是在父视图中的第一个控件像这样:

之前

我在ImageView之后移动了tableView,它工作正常:

后

似乎把桌面视图放在第一个位置是造成了麻烦,而将桌面视图移动到另一个位置解决了问题。

PD我没有使用autoLayout都不是故事板

希望这可以帮助别人!

我也面临这个问题。

UIScrollView内容大小由OS作为其他大小,由约束系统提供的起源计算 – 这就是为什么OS有疑问。

如何解决 – 你应该明确定义UIScrollView内容大小:

  1. 将可滚动内容embeddedUIView (我将其重命名为ContentView
  2. 添加约束:

ContentView.Weight = View.WeightContentView.Height = View.Height

在这里输入图像说明

这似乎是一个解决scheme是查看故事板文件为“iOS 6.1及更早版本”(select故事板文件 – >文件检查器 – >界面生成器文档 – >查看为定位子模式显示偏移量。

谢谢你们的解决scheme! 我努力解决这个问题挣扎了好几个小时。 当没有涉及导航栏的时候,一切正常,但是当我将ViewControllerembedded到NavigationController中的时候,它已经不合时宜了。

我通过取消选中“ 调整滚动视图插入“顶部酒吧”来解决此问题。 这两个都位于ViewController的Attribute Inspector中。 太感谢了!