在 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 中心点的主要内容,如果未能解决你的问题,请参考以下文章