2014-01-21 34 views
2

我试图模拟苹果公司在他们的“消息”应用程序中使用什么,他们有一个滚动视图,重新调整自己适当的偏移量,如果你已经高于滚动视图内容的顶部。UIScrollView内容偏移不按预期工作

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

我的代码是目前:

- (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]; 
    } 
} 

该函数接受一个LONGGGG时间它重新之前调整视图。

所以最后,我的问题:

  1. 如何确保触摸,滚动视图并没有忽视内容的偏移,然后慢慢地调整自身回后不久适当偏移。

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

+2

你应该在'scrollViewDidEndDragging'添加此代码:

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

当我应该一直在使用它仅在用户与scrollView交互时调用。由于您在'scrollViewDidEndDecelerating'中设置了偏移量,它会在减速结束时更改偏移量。然后,再次设置偏移量后,再次调用“scrollViewDidEndDecelerating”,并重新设置偏移量,并且此过程以递归方式发生。 – n00bProgrammer

+1

不要用Xcode标记你的问题。阅读标签的描述。它不适用于你的问题。 – rmaddy

+0

这两条评论都很有帮助;但是,切换到scrollViewDidEndDragging没有解决问题。奇怪的是,在模拟器上加载工作正常,当我通过iPhone启动时出现问题(完全是最新的ios) – kjbradley

回答

4

我发现该错误是事实,我用的是:

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