iOS 7 - navigationController正在设置我的UIScrollView的contentInset和ContentOffset

Wil*_*sch 69 uiscrollview uinavigationcontroller ios ios7

我有一个UIScrollView(实际上是一个UICollectionView,但这可能没关系).当它出现在IOS 7中时,导航控制器将其contentInset和contentOffset设置为我不想要的值.它似乎正在尝试调整状态栏和导航栏.我非常喜欢让他们独自一人.我已经通过覆盖contentInset和contentOffset的getter和setter方法来解决这个问题,并使用一个标志来告诉对象它是否应该接受一个集合.但有更好的方法吗?

KDa*_*ker 208

尝试self.automaticallyAdjustsScrollViewInsets = NO在主视图控制器中进行设置.

这是介绍的,iOS 7所以你可能想用iOS版本检查包装,如果你支持iOS 6及以下.


更新

如果您使用的是故事板,则可以在Interface Builder中执行此操作,也可以检查'Adjust Scroll View Insets'所选的控制器.

在此输入图像描述

  • 只有在使用故事板时才可以在IB上进行设置. (7认同)

Chu*_*y47 25

我有一个类似的问题,在解除了一个viewController后,我的tableView中的contentOffset被改为(0,-64).

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

它是父视图中的第一个控件,如下所示:

之前

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

后

似乎将表视图放在第一个位置导致了麻烦,并将表视图移动到另一个位置解决了问题.

PD我没有使用autoLayout和故事板

希望这可以帮助别人!

  • 发生这种情况的原因是由接受的答案暗示的.UIViewController将自动设置第一个UIView的contentInset.通过使UITableView成为第二个视图,它不会自动设置它的contentInset. (4认同)
  • 你是个明星!从来没有想过滚动视图的顺序可能是问题. (2认同)

ama*_*ere 5

我有两个解决方案:

1.

self.view = scrollView;
Run Code Online (Sandbox Code Playgroud)

2.

[self.navigationController.toolbar setTranslucent:NO];
Run Code Online (Sandbox Code Playgroud)