contentOffset和contentInset如何在iOS 7中用于UIScrollView?

时间:2014-05-02 19:06:56

标签: ios uiscrollview contentoffset

这是我对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?

提前致谢

1 个答案:

答案 0 :(得分:1)

因为iOS 7.0中的automaticallyAdjustsScrollViewInsets默认值为YES

  

此属性的默认值为YES,这使容器视图控制器知道应调整此视图控制器视图的滚动视图插图,以考虑状态栏,搜索栏,导航栏,工具栏所占用的屏幕区域,或标签栏。如果视图控制器实现管理自己的滚动视图插入调整,请将此属性设置为NO。

UIViewController Class Reference