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