同时对view延时执行两个动画时候的现象

对于view延时执行了两个动画后,会将第一个动画效果终止了,直接在第一个动画的view的最后的状态上接执行后续的动画效果,也就是说,我们可以利用这个特性来写分段动画效果,比如,可以定时2秒,2秒的状态值为100%,中途可以停止,达不到2秒的效果就触发不了最终效果,这对于写控件来说是很好的一个属性哦,下次教程将会写一个按钮的特效的控件,效果类似于:

效果:

源码:

//
//  ViewController.m
//  ViewAnimation
//
//  Created by YouXianMing on 15/1/13.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, strong) UIView   *showView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 添加view
    self.showView                 = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 0, 30)];
    self.showView.backgroundColor = [UIColor redColor];
    [self.view addSubview:self.showView];

    // 1s后执行变长动画
    [self performSelector:@selector(viewAnimationOne) withObject:nil afterDelay:1];

    // 2s后执行缩小动画
    [self performSelector:@selector(viewAnimationTwo) withObject:nil afterDelay:2];
}

- (void)viewAnimationOne {

    // 动画时间长度为3s
    [UIView animateWithDuration:3.f animations:^{
        self.showView.frame = CGRectMake(10, 100, 0 + 300, 30);
    } completion:^(BOOL finished) {
        NSLog(@"动画1结束 %@", NSStringFromCGRect(self.showView.frame));
    }];

}

- (void)viewAnimationTwo {

    // 动画时间长度为1s
    [UIView animateWithDuration:1.f animations:^{
        self.showView.frame = CGRectMake(10, 100, 0, 30);
    } completion:^(BOOL finished) {
        NSLog(@"动画2结束 %@", NSStringFromCGRect(self.showView.frame));
    }];
}

@end

时间: 2025-01-02 09:24:54

同时对view延时执行两个动画时候的现象的相关文章

如何按顺序执行两个动画

问题: 假如:需要按顺序执行两个动画A.B,B动画需要在A动画执行完毕后再执行.两个动画的执行不能有时间间隔,即A动画执行完毕立即执行B动画. 实现方案: 事先已经导入了Facebook的pop框架,并#import <POP.h> 1.设置A动画的动画时间,执行A动画 2.创建NSTimer定时器timer,设置时间间隔为A动画的动画时间.并把timer添加到主运行循环. 3.把B动画添加到timer调用的的selector方法中. - (void)touchesBegan:(NSSet *

swiper.animate~之~可以执行两种动画的升级版的Swiper Animate

1.下载插件swiper.animate-twice.min.js,加载进页面. <!DOCTYPE html> <html> <head> ... <link rel="stylesheet" href="path/to/swiper.min.css"> <link rel="stylesheet" href="path/to/animate.min.css"> &

22.调用delay()方法延时执行动画效果

delay()方法的功能是设置一个延时值来推迟动画效果的执行,它的调用格式为: $(selector).delay(duration) 其中参数duration为延时值,它的单位是毫秒,当超过延时值时,动画继续执行. 例如,当页面中图片动画正在执行时,点击“延时”按钮调用delay()方法推迟2000毫秒后继续执行,如下图所示: 在浏览器中显示的效果: 从图中可以看出,当图片动画正在执行时,点击“延时”按钮,调用delay()方法中止当前正在执行的图片动画效果,当超过设置的延时值时,动画效果继续

iOS:延时执行的三种方式

延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObject (NSDelayedPerforming) ※延时调用在当前线程使用特定模式的方法(如果数组没有数据或者参数为nil,则不会调用selector中方法) - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterD

iOS开发笔记7:Text、UI交互细节、两个动画效果等

Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中遇到的一些细节问题,包括Masonry部分的问题. 动画介绍最近用到的两个,算是常用级别的,动画这部分之后会专门研究总结下. 最后介绍两个工具及三个Xcode使用设置的问题. 1.Text (1)UILabel显示多行文字并且文字置顶显示 不限制UILabel的高度(宽度需要设置,确定文字何时换行)

jQuery使用数据绑定的方式来执行元素的动画【原】

网页排版中如果有大量的元素动画并且使用jquery的animate来生成,写出来的js代码又多又乱:换一种方式:把动画的属性绑定到动画元素上,再写一个通用的方法去读取这些属性然后自动的生成对应的动画:或许这样可以省点力气,看起来也更加直观. <!DOCTYPE html> <html> <head> <title>使用数据绑定的方式来执行元素的动画</title> <meta charset="utf-8"> &l

css3 同时加载两个动画

最近在做H5,遇到这样的需求(如题) 先上一部分代码: .cur .p1d1d4{   width: 3rem;   margin: 2rem 5.3rem 0 0;   -webkit-animation: p1d1d4 1s ease-out;   animation: p1d1d4 1s ease-out; } @keyframes p1d1d4 {   0% {     margin: 2rem 10rem 0 0;   }   100% {     margin: 2rem 5.3re

【Linux探索之旅】第三部分第五课:延时执行,唯慢不破

内容简介 1.第三部分第五课:延时执行,唯慢不破 2.第三部分测验题 延时执行,唯慢不破 上一课(<[Linux探索之旅]第三部分第四课:后台运行及合并多个终端>)中,我们学习了后台进程以及如何在一个终端里打开多个虚拟终端. 到目前为止,我们所运行的命令都是立即执行,也就是我们按下回车键的那一刻,命令就开始执行了. 其实Linux中命令还可以延时执行.这一课我们就来学习几个命令,可以帮助我们<稍后>执行程序.比如我们即将学习到的crontab命令. 所有这一课新学的命令都涉及到时间

比分显示控件,自带两种动画

1.效果图 这是静态的,有两种动画,运行代码后能看到 2.代码 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.FontMetrics; import android.graphics.RectF; import android.uti