iphone - 如何在滚动 uiscrollview 时更改图像背景?

标签 iphone ios objective-c uiscrollview

正如我在上面的标题中所述,我想在 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/

相关文章:

iphone - MPMoviePlayer 不播放视频

java - Xcode 4.5.1 : Linker Error: NSJavaVirtualMachine, 找不到体系结构 i386 的符号

iphone - 如何正确停止当前正在运行的 xCode 项目?

iOS iPhone sleep / Action 前的间隔

iphone - 委托(delegate)和协议(protocol)无法正常工作

ios - 找不到名为的 Storyboard

c++ - 访问尚未初始化的对象的成员?

iphone - CoreData 中的关系和实体

iphone - 使用正则表达式验证文本字段

ios - 删除 UITableViewCell 后,出现空白行