繁体   English   中英

快速滚动UIScrollView时,UIImageView停止调整大小

[英]UIImageView stops resizing when fast scrolling a UIScrollView

因此,我在应该调整大小的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)。

问题是,如果我快速滚动,图像将停止调整大小,但是其余的scrollview会像往常一样快速向下滚动。 然后,当滚动视图回弹时,图像立即展开,然后按比例缩小(请参见此处的视频: https ://dl.dropbox.com/u/80699/scroll2.m4v)。

通过这种行为,用户体验不是很好,并且用户会看到跳跃的图像。

有谁知道我该如何解决?

如果您想自己查看行为,这是一个小示例项目: https : //dl.dropbox.com/u/80699/scroll.zip

谢谢你的帮助! 如果不清楚,请发表评论

我快速浏览了一下您的测试项目,我相信问题是当您快速滚动时,到称为Y偏移的回调时,该值大于-50,因此图像视图不会调整大小。

我通过删除内部if条件并赋予背景最大高度来解决此问题:

if(scrollViewOffset < 0.0f) {
    // postition top
    CGRect imageViewRect = self.imageView.frame;
    imageViewRect.origin.y = scrollViewOffset;

    CGFloat newBackdropHeight = kImageHeight - MAX(scrollViewOffset,-50.0);
    imageViewRect.size.height = newBackdropHeight;

    self.imageView.frame = imageViewRect;
}

希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM