在 UIScrollView 的滚动上更改 UIImageView 中心点

Posted

技术标签:

【中文标题】在 UIScrollView 的滚动上更改 UIImageView 中心点【英文标题】:Change UIImageView center point on scroll of UIScrollView 【发布时间】:2013-06-26 18:14:49 【问题描述】:

我试图在用户滚动 UIScrollView 时创建一个非常简单的视差效果。我在我的滚动视图上使用了 scrollViewDidScroll 方法,一切正常。我可以从该方法记录所有内容,因此我知道当 UIScrollView 滚动时它会被触发。问题是我尝试对 UIScrollView 的内容进行的任何更改都失败了。可能是渲染问题? UIScrollView 在滚动期间不会重新呈现其内容吗?

我已尝试更改 UIImageView(imageView) 的框架和中心点,但没有任何效果。关于可能发生的事情的任何想法,我没有收到任何错误或任何东西。

-(void)scrollViewDidScroll:(UIScrollView *)body 

    float y = body.contentOffset.y;

      imageView.center = CGPointMake(imageView.bounds.size.width/2, (imageView.bounds.size.height/2) - y/2);

    // Tried this as well
    //[imageView setFrame:CGRectMake(0, 0, imageView.bounds.size.width, imageView.bounds.size.height + (y * 2))];

    NSLog(@"We are scrolling...");


【问题讨论】:

【参考方案1】:

想通了,我实际上需要使用 ScrollView 来获取 ImageView 的实例。其他任何人都想弄清楚这一点,我做了一点hacky,但它确实有效。

/* Paralax Scrolling */
-(void)scrollViewDidScroll:(UIScrollView *)body 

    float y = body.contentOffset.y;

    // When adding (body) image view to scroll view I assigned a tag of 100 to it.
    [body viewWithTag:100].center = CGPointMake([body viewWithTag:100].bounds.size.width/2, ([body viewWithTag:100].bounds.size.height/2) + y/2);


【讨论】:

以上是关于在 UIScrollView 的滚动上更改 UIImageView 中心点的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIScrollView 更改图像的 alpha

ScrollView不会快速滚动

UIScrollView 在动画后更改页面

滚动 UIScrollView 会更改其子视图框架

如何更改 UIScrollView 中的滚动方向?

UIScrollView 有时会在更改内部 UITableView 的高度时失去滚动