我目前正在ios 7上迁移我的应用程序,并且我在新的导航控制器/栏管理上遇到了几个小时。
之前,当我们有导航控制器时,我们有一个这样的片段:
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
在界面构建器中,我们可以选择为视图设置现有导航栏,并且所有内容都与实际视图的内容相匹配。
现在好了,我不知道如何使用界面构建器正确设计。 我仍然有我的片段来初始化我的navcontroller。但是在我的MainViewController的界面构建器中,如果我将状态栏设置为半透明或不透明的导航栏,我的顶部偏移量为44px(见下文)。
Interface Builder_________________________和结果
现在,如果我将状态栏设置为无,则顶部没有偏移,但由于导航栏导致模拟器上的视图较小,因此界面构建器中视图的底部会被切断。
Interface Builder_________________________和结果
我想我真的错过了一些东西,但我在iOS7 Transitions Guide中找不到任何主题或苹果信息。
感谢您的帮助
修改
正如我们在图片中看到的那样,视图的第一个子节点是包含两个标签的UIScrollView,当没有scrollview时,问题不会出现。如果它是UITableView也会出现。 如果标签位于UIScrollView之外,则该标签没有偏移量。
答案 0 :(得分:285)
好的,所以我找到了解决方案,我在控制器中设置了属性:
self.automaticallyAdjustsScrollViewInsets = false
我真的不明白这个属性的真正好处,(或者为什么默认值为true)
我发现的唯一文件是:
<强>更新强>
在iOS 11中automaticallyAdjustsScrollViewInsets
已弃用
您现在应该使用:
self.tableView.contentInsetAdjustmentBehavior = .never
我还建议您查看this question及其答案,以便更好地了解这些属性
答案 1 :(得分:92)
@ Justafinger的答案对我来说也很有魅力。
只是想补充一点,也可以从界面构建器轻松调整此设置。
答案 2 :(得分:11)
我遇到了同样的问题,但我在界面构建器中的ViewController上发现了一个相当奇怪的属性,似乎已经为我造成了这个问题。有一个&#34; Extend Edges&#34;一组复选框。我删除了&#34; Under Top Bars&#34;检查,一切都开始适合我。
答案 3 :(得分:2)
如果将AutomaticAdjustsScrollViewInsets设置为YES(默认设置),则ios6和ios7之间的滚动视图定位不匹配,因此要使它们保持一致,您需要禁用此设置。但是,如果碰到了selfAdjustsScrollViewInsets,ios6会崩溃,所以你需要在ios7上以自动调整自动调整自动调整的方式,或者使用storyboard / NIB关闭选项
答案 4 :(得分:2)
我遇到了类似的问题,在解除了一个viewController后,我的tableView中的contentOffset被更改为(0,-64)。
我的解决方案有点奇怪,我尝试了所有其他答案但没有成功,解决我的问题的唯一办法就是在.xib的控件树中切换tableView位置
它是父视图中的第一个控件,如下所示:
我在ImageView之后移动了tableView,它运行起来了:
似乎将表格视图放在第一个位置会导致麻烦,并将表格视图移动到另一个位置可以解决问题。
Pd积。我没有使用autoLayout和故事板
希望这可以帮助别人!答案 5 :(得分:1)
我也遇到了这个问题。
UIScrollView
内容大小由操作系统计算为其他大小,由约束系统提供 - 这就是为什么操作系统有疑问。
如何修复 - 您应明确定义UIScrollView
的内容大小:
UIView
(我将其重命名为ContentView
) ContentView.Weight = View.Weight
和ContentView.Height = View.Height
答案 6 :(得分:0)
似乎解决方案是将故事板文件视为“iOS 6.1及更早版本”(选择故事板文件 - &gt;文件检查器 - &gt; Interface Builder文档 - &gt;查看为。此模式中的定位子视图显示抵消。
答案 7 :(得分:0)
谢谢大家的解决方案!我努力解决问题几个小时。当没有导航栏时,一切都很好,但是当我在ViewController中嵌入ViewController时,它就变得混乱了。
我通过取消选中调整滚动视图插图和在顶部栏下来解决此问题。这两个都位于ViewController的属性检查器中。万分感谢!