【问题标题】:animate image/UIView iOS动画图像/UIView iOS
【发布时间】:2012-12-12 14:40:19
【问题描述】:

在我的应用程序的主页上,我想为一个滑入视图的 PNG 图像设置动画,然后在第二个图像滑入和滑出之前再次滑出。时间只是让观众在每个消失之前阅读。我不知道该怎么做,想要一些输入?看起来很简单,我希望它是,有人可以指导我如何去做。我也希望它循环播放,因此无论何时返回屏幕,它都会保持动画效果。

有什么想法吗?只有一天左右才能完成

【问题讨论】:

    标签: ios animation uiview uiviewanimation


    【解决方案1】:

    您可以为此使用核心动画。这真的很容易做到。示例动画:

    UIImageView *imageView = ...;
    imageView.frame = CGRectMake(-160, 100, 250, 200);
    [UIView animateWithDuration:1.5 animations:^{
        imageView.frame = CGRectMake(160, 100, 250, 200);
    }];
    

    这会使UIImageView 在 1.5 秒内从 x 坐标 -160 变为 160。

    【讨论】:

    • 在不更改视图大小的情况下,您是否有任何理由为框架设置动画?为什么不简单地为center 属性设置动画? (另外,这是 UIView 动画而不是核心动画)
    • 中心也很好。我不介意。它是核心动画,但上面有一个薄的 UIKit 抽象层。
    • 按照这个逻辑,它也是 OpenGL ES :D
    • 我只是将其视为“真实”核心动画代码的简写符号,通常跨越几行代码。如果你想调用 UIView 动画,那很好。 Core Animation 听起来更棒:P
    • 哪个参数穿过屏幕?不是垂直的.. :/
    【解决方案2】:

    或多或少只是扩展了 Tom van Zummeren 的答案。这应该足以理解基本概念。

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
    
        UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, -280, 280, 280)];
        [myImageView setImage:[UIImage imageNamed:@"1.png"]];
        [self.view addSubview:myImageView];
    
        [UIView animateWithDuration:2.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
            [myImageView setCenter:self.view.center];
        }completion:^(BOOL done){
            [UIView animateWithDuration:2.0 delay:3.0 options:UIViewAnimationOptionCurveEaseIn animations:^{
                [myImageView setCenter:CGPointMake(myImageView.center.x, self.view.bounds.size.height + (myImageView.bounds.size.height / 2))];
            }completion:^(BOOL done){
                [myImageView setFrame:CGRectMake(20, -280, 280, 280)];
                NSLog(@"%@",NSStringFromCGRect(myImageView.frame));
                [myImageView setImage:[UIImage imageNamed:@"2.png"]];
            }];
        }];
    }
    

    【讨论】:

    • 感谢现在向我概述的内容,我可以继续努力了,干杯
    • 需要一些工作,而不是垂直,我如何获得水平?整个屏幕,它几乎是我想要的,需要稍微调整一下,+ 使图像不会被压扁
    • + 第二张图片,无法显示.. 请进一步输入?
    • 我知道,但我还是初学者,我在哪里可以从指南中找到有关如何为图像视图设置动画的信息...
    • @holtii 抱歉,我不是故意让这听起来那么充满敌意。您要研究的是此代码中CGRectMake 的用法。这些就是将对象放在屏幕上的位置。第二张图片没有出现,因为没有触发额外的动画。在 image1 离开屏幕后,此代码将其重置为其原始位置,然后更改图像视图中的图像,但永远不会将其动画化回到屏幕上
    【解决方案3】:

    //起点

    pImgFlowing.frame = CGRectMake(544, 817, 84, 18);
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    

    //终点

    pImgFlowing.frame = CGRectMake(544, 774, 84, 61);
    [UIView commitAnimations];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多