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

时间:2013-06-26 18:14:49

标签: ios ipad cocoa-touch

当用户滚动UIScrollView时,我正在尝试创建一个非常简单的视差效果。我在我的scrollview上使用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 个答案:

答案 0 :(得分:2)

想出来,我实际上需要在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);

}