UIScrollView内容偏移无法按预期工作

时间:2014-01-21 18:14:26

标签: ios objective-c uiscrollview

我正在尝试模拟Apple Inc.在其“消息”应用中使用的内容,其中有一个滚动视图,如果您已经超过滚动视图内容的顶部,则会将其自身重新调整为适当的偏移量。

我的滚动视图占据了整个屏幕,但我有一个位于内容前面的标题栏(如“消息”)。触摸滚动视图后,偏移会立即像垃圾一样被丢弃,顶部内容隐藏在标题栏下方。

我的代码目前是:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.scroller setDelegate:self];
    [self.scroller setScrollEnabled:YES];
    [self.scroller setContentSize:CGSizeMake(320, 600)];
    //****this offset is for the title bar****
    [self.scroller setContentOffset:CGPointMake(0, -100) animated:YES];
// Do any additional setup after loading the view.
}

我有一个函数试图根据y位置重新调整视图:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  {
    if (scrollView.contentOffset.y < 10){
        NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
        [scrollView setContentOffset:CGPointMake(0, -100) animated:YES];
    }
}

此功能需要更长的时间才能重新调整视图。

最后,我的问题:

  1. 如何确保触摸时,滚动视图不会忽略内容偏移,然后在不久之后慢慢将自身调整回适当的偏移。

  2. 如何更改重新调整内容偏移的速度,使其类似于“消息”?

1 个答案:

答案 0 :(得分:4)

我发现错误是我正在使用的事实:

[self.scroller setContentOffset:CGPointMake(0, -100) animated:YES];

当我应该使用时:

[self.scroller setContentInset:UIEdgeInsetsMake(self.statusbar.height,0,0,0)];