正如我在上面的标题中所述,我想在 uiscrollview
滚动时更改图像背景以动画方式淡出并替换为另一个图像。我的 uiviewcontroller
层次结构很简单:
uiviewcontroller--->uiimageview--->uiscrollview
关于 uiscrollview 的附加信息:
1. 我的 uiscrollview 包含一个简单的 uilabel
和一些 uiimageview
(只是 uiscrollview
的 subview 的一小部分)。
2.启用分页
3. 水平滚动(如果有的话)
所以,这里有人可以帮我如何完成这个方法吗?只是一个简单的线索将不胜感激,因为我仍然是初学者,但我想向这里的所有大师学习。
非常感谢您提供的所有帮助,祝您有美好的一天。
最佳答案
还有另一种方法(更简洁的 IMO):
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UIImage * toImage = [UIImage imageNamed:@"myname.png"];
[UIView transitionWithView:self.view
duration:5.0f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.imageView.image = toImage;
} completion:nil];
}
编辑
对于多张图片/页面来回切换,最好使用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
这样在页面之间切换时就不会发生任何冲突。
要使图像相应地发生变化,您可以使用 switch
语句,这也意味着您必须将页面与数字相关联。由于 Apple 没有将此作为 UIScrollView 的属性包含在内,因此您必须自己使用以下方法获取数据:
int page = scrollView.contentOffset.x / scrollView.frame.size.width;
然后用一个很好的方法将所有这些加在一起:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int page = scrollView.contentOffset.x / scrollView.frame.size.width;
//Use the switch to set the variable (toImage) depending on the page
switch (page){
case 0: UIImage * toImage = [UIImage imageNamed:@"imageOne.png"];
break;
case 1: UIImage * toImage = [UIImage imageNamed:@"imageTwo.png"];
break;
case 2: UIImage * toImage = [UIImage imageNamed:@"imageThree.png"];
break;
case 3: UIImage * toImage = [UIImage imageNamed:@"imageFour.png"];
break;
}
//use the variable (toImage) and perform the transition from the current image
[UIView transitionWithView:self.view
duration:5.0f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.imageView.image = toImage;
} completion:nil];
}
我没有测试过上面的代码,但根据我对 C 和 Obj C 的了解,它应该可以工作。
关于iphone - 如何在滚动 uiscrollview 时更改图像背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18665307/