所以我在应该调整大小的 ScrollView 中有一个 imageView,它可以按我想要的方式工作(在这里看一个小视频:https ://dl.dropbox.com/u/80699/scroll.m4v )
我所做的是设置 UIScrollViewDelegate 并使用该scrollViewDidScroll
方法根据滚动偏移量调整图像大小
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
CGFloat scrollViewOffset = aScrollView.contentOffset.y;
if(scrollViewOffset < 0.0f) {
// postition top
CGRect imageViewRect = self.imageView.frame;
imageViewRect.origin.y = scrollViewOffset;
if(scrollViewOffset < 0.0f && scrollViewOffset >= -50.0f) {
CGFloat newBackdropHeight = kImageHeight - scrollViewOffset;
imageViewRect.size.height = newBackdropHeight;
}
self.imageView.frame = imageViewRect;
}
}
这里基本上发生的是,如果用户在顶部时向上滚动(启用反弹),则 imageView 会随着滚动扩展直到一定的偏移量(此处为 60px)。
这样做的问题是,如果我滚动得非常快,图像会停止调整大小,但滚动视图的其余部分会像往常一样快速向下滚动。然后,当滚动视图回弹时,图像会立即展开,然后按比例缩小(参见此处的视频:https ://dl.dropbox.com/u/80699/scroll2.m4v )。
使用这种行为,用户体验不是很好,用户会看到一个跳跃的图像。
有人知道我怎么解决这个问题吗?
如果您想自己查看行为,这是一个小示例项目:https ://dl.dropbox.com/u/80699/scroll.zip
感谢您的帮助!如果有任何不清楚的地方,请发表评论