正如我在上面的标题中已经说过的那样,我希望在滚动uiscrollview
时动画淡化图像背景并替换为另一个图像。我的uiviewcontroller
层次结构很简单:
的UIViewController --->的的UIImageView --->的的UIScrollView
关于uiscrollview的其他信息:
1.我的uiscrollview包含一个简单的uilabel
和一些uiimageview
(只是一小部分作为uiscrollview
的子视图)。
2.启用分页
3.水平滚动(如果有的话)
所以,有谁可以帮助我如何完成这个方法?只是一个简单的线索将非常感激,因为我仍然是一个初学者,但我想从这里的所有大师学习。
非常感谢你的帮助,祝你有个美好的一天。
答案 0 :(得分:1)
我认为你可以试试这段代码
步骤1:将UIScrollViewDelegate添加到您的UIViewController
步骤2:在UIViewController(XIB或StoryBoard)上附加UIScrollView委托
步骤3:在实现控制器中实现此委托方法
-(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[UIView animateWithDuration:0.5
animations:^{
[self<UIImageView> setAlpha:0];
}
];
[self<UIImageView> setImage:<Your second image>]
[UIView animateWithDuration:0.5
animations:^{
[self<UIImageView> setAlpha:1];
}
];
}
也许那个scrollViewDidScroll:委托它更明智的必须测试
答案 1 :(得分:1)
还有另一种方法(整洁的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的了解,它应该可以工作。