前言:我的第一篇文章荼菜的iOS笔记–Core Animation 核心动画算是比较详细讲了核心动画的用法,但是如你上篇看到的,有时我们只是想实现一些很小的动画,这时再用coreAnimation就会觉得麻烦,不用慌,苹果工程师爸爸们已经为我们给UIView封装好了一些coreAnimationBlock,足以满足平时的动画需求。

  • 动画Block1
1
2
3
4
5
6
7
8
9
10
/*
参数1: Duration: 动画持续时间
参数2: delay: 延迟时间
参数3: options: 枚举值 动画的效果类型
*/
[UIView animateWithDuration:2 delay:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
ws.MyLabel.frame = CGRectMake(100, 100, 100, 100);
} completion:^(BOOL finished) {
NSLog(@"结束了%d", finished);
}];
  • 动画Block2-(模拟弹簧弹跳的效果)
1
2
3
4
5
6
7
8
9
10
11
/*
Spring: 模拟弹簧弹跳的效果
参数: Damping:阻尼 0-1 阻尼越小动画越明显
参数: initialSpringVelocity : 动画初始变化速度
参数: options 转变的风格 枚举值
*/
[UIView animateWithDuration:10 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:15 options:(UIViewAnimationOptionCurveEaseInOut) animations:^{
ws.MyLabel.center = CGPointMake(self.view.center.x, 100);
} completion:^(BOOL finished) {
NSLog(@"弹簧效果结束");
}];
  • 动画Block3-(关键帧动画)也就是里面有好几个动画进行转变
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
Duration:持续时间
delay: 延迟时间
options: 枚举值 动画的风格
*/
[UIView animateKeyframesWithDuration:3 delay:0 options:(UIViewKeyframeAnimationOptionRepeat) animations:^{
/*
参数1: RelativeStartTime: 相对的开始时间
参数2: relativeDuration:相对持续时间
*/
[UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{
ws.MyLabel.center = self.view.center;
}];
[UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.3 animations:^{
ws.MyLabel.frame = CGRectMake(100, 100, 100, 100);
}];
[UI 大专栏  荼菜的iOS笔记--UIView的几个Block动画View addKeyframeWithRelativeStartTime:0.8 relativeDuration:0.3 animations:^{
ws.MyLabel.frame = CGRectMake(100, 400, 100, 100);
}];
} completion:^(BOOL finished) {
NSLog(@"开始了吗?已经结束了。。");
}];
  • Masonry动画更新约束
    1.有时不适用
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [ws.allWarpView mas_updateConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(ws.view.mas_left);
    make.right.equalTo(ws.view.mas_right);
    make.top.equalTo(ws.view.mas_top);
    make.bottom.equalTo(ws.view.mas_bottom);
    }];
    // 告诉self.view约束需要更新
    [self.view setNeedsUpdateConstraints];
    // 调用此方法告诉self.view检测是否需要更新约束,若需要则更新,下面添加动画效果才起作用
    [self.view updateConstraintsIfNeeded];
    [UIView animateWithDuration:0.3 animations:^{
    [self.view layoutIfNeeded];
    }];

2.解决

1
2
3
4
5
6
7
8
   [self layoutIfNeeded];//如果其约束还没有生成的时候需要动画的话,就请先强制刷新后才写动画,否则所有没生成的约束会直接跑动画
    JCWeakSelf
    [UIView animateWithDuration:0.3 animations:^{ 
        [_keywordTextField mas_updateConstraints:^(MASConstraintMaker *make) {
            make.width.mas_equalTo(@(255*RealScaleFactor));
        }];
        [ws layoutIfNeeded];//强制绘制
    }];

后话:附上之前写的文章,欢迎指正:
荼菜的iOS笔记–Core Animation 核心动画
荼菜的iOS笔记–一些实用功能。
荼菜的iOS笔记–UITableViewCell的各种操作(刷新、插入、删除、动画)
荼菜的iOS笔记–一张图记住所有git命令行操作。
荼菜的iOS笔记–一张图告诉你程序员需要知道的这些网站。
荼菜的iOS笔记–图片裁剪黑魔法。
荼菜的iOS笔记–iOS自动打包脚本(Python)
荼菜的iOS笔记–我的编码规范参考。
荼菜的iOS笔记–iOS基础优秀博客总结ToDoList
荼菜的iOS笔记–Xcode Tips
当然,我还写过诗。。。
光。

荼菜的iOS笔记--UIView的几个Block动画的更多相关文章

  1. IOS笔记047-代理传值和block传值

    在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...

  2. iOS:UIView的block函数实现转场动画---单视图

    使用UIView动画函数实现转场动画——单视图 + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration ...

  3. iOS之UIview动画

    一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成, ...

  4. iOS中UIView翻转效果实现

    本文转载至  http://baishiyun.blog.163.com/blog/static/13057117920148228261747/ 新建一个view-based模板工程,在ViewCo ...

  5. 李洪强iOS经典面试题143-绘图与动画

    李洪强iOS经典面试题143-绘图与动画   绘图与动画 CAAnimation的层级结构 CAPropertyAnimation是CAAnimation的子类,也是个抽象类,要想创建动画对象,应该使 ...

  6. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  7. AJ学IOS(42)UI之核心动画CAAnimationGroup以及其他

    AJ分享,必须精品 效果: 代码: 很简单,不多说,就是把一堆动画放一起,看代码. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent * ...

  8. Android群英传笔记——第七章:Android动画机制和使用技巧

    Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中 ...

  9. 【Visual C++】游戏编程学习笔记之六:多背景循环动画

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44264153 作者:ZeeCod ...

随机推荐

  1. 201771010123汪慧和《面向对象程序设计Java》第十周实验总结

    一.理论部分 1.泛型:也称参数化类型.就是定义类.接口和方法时,通过类型参数指示将要处理的对象类型. 2.泛型程序设计:编写代码可以被很多不同类型的对象所重用. 3.泛型方法: a.除了泛型类外,还 ...

  2. c语言:函数的递归调用

    c语言可以将代码模块化,这是其很重要的一个特性. 说道代码模块化,我们很自然的就会联想到函数.而函数中,比较难的一个知识点就是函数的递归调用. 值得注意的是,函数的递归调用在现实工作并不是很常用,但是 ...

  3. socket实践编程1

    1.服务器端程序编写 (1).socket (2).bind (3).listen (4).accept,返回值是一个fd,accept正确返回就表示我们已经和前来连接我的客户端之间建立了一个TCP连 ...

  4. @Autowired的几个使用细节

    1.使用@Autowired的当前类也必须由spring容器托管(打@Coponent.@Controller.@Service .@repository) 2.不管是public 和  privat ...

  5. image compression with libjpeg

    http://www.aaronmr.com/en/2010/03/test/ Working on the project I've seen in the need for compression ...

  6. 思考题:clock类编写

    题目 为便于后文理解,这里先补上这份代码前文开的库以及宏定义: #include<cstdio> #include<iostream> #include<string&g ...

  7. python导入自定义的库

    一.导入项目文件夹下的模块 1.导入整个模块 import 模块名 2.导入模块的某个函数 from 模块名 import 函数名 示例 untitled是项目文件夹,文件结构如下 ①在a.py导入c ...

  8. orbslam算法框架

    ORB-SLAM[1]完全继承了PTAM(http://www.cnblogs.com/zonghaochen/p/8442699.html)的衣钵,并做出了两点巨大改进:1)实时回环检测:2)很鲁棒 ...

  9. maven打包springboot项目的插件配置概览

    jar包的术语背景: normal jar: 普通的jar,用于项目依赖引入,不能通过java -jar xx.jar执行,一般不包含其它依赖的jar包. fat jar: 也叫做uber jar,是 ...

  10. H - Mr. Panda and Birthday Song Gym - 101775H (动态规划)

    Mrs. Panda’s birthday is coming. Mr. Panda wants to compose a song as gift for her birthday. It is k ...