1

这是我对 UIScrollView (iOS 7) 的理解:

  • contentOffset定义内容视图的起点
  • contentInset可以有效地在内容视图周围添加“填充”

在 Xcode 中,我创建了一个单视图应用程序。在 IB 中,我向UIScrollView视图控制器添加了一个,并将控制器嵌入到导航控制器中。在视图控制器代码中,我添加了以下方法:

- (void)viewDidAppear:(BOOL)animated
{
    [self.scrollView setContentSize:CGSizeMake(380, 1000)];
    NSLog(@"top = %f, bounds top %f", self.scrollView.frame.origin.y, self.scrollView.bounds.origin.y);
    NSLog(@"offset y = %f", self.scrollView.contentOffset.y);
    NSLog(@"height = %f", self.scrollView.contentSize.height);
    NSLog(@"inset top = %f", self.scrollView.contentInset.top);
    NSLog(@"inset bottom = %f", self.scrollView.contentInset.bottom);
}

我的结果:

top = 0.000000, bounds top -64.000000
offset y = -64.000000
height = 1000.000000
top = 64.000000
bottom = 0.000000

contentInset.top值有效地将内容向下移动,使其位于导航栏下方。为什么contentOffset.y设置为-64,而滚动视图的边界设置为-64?

提前致谢

4

1 回答 1

1

因为automaticallyAdjustsScrollViewInsets默认值是YES在 iOS 7.0 中。

此属性的默认值为 YES,它让容器视图控制器知道他们应该调整此视图控制器视图的滚动视图插图,以考虑状态栏、搜索栏、导航栏、工具栏或选项卡栏占用的屏幕区域. 如果您的视图控制器实现管理自己的滚动视图插图调整,请将此属性设置为 NO。

UIViewController 类参考

于 2016-04-20T09:24:29.700 回答