UI- Layer的使用总结(附动画)
#pargma mark - Layer
1. 设置当前视图的背景颜色
self.view.backgroundColor = [UIColor lightGrayColor];
2. 创建一个视图,并且设置frame
UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)];
3. 将创建的视图添加到当前视图
[self.view addSubview:myView];
4. 设置创建视图的背景颜色
myView.backgroundColor = [UIColor blueColor];
5. 设置视图的层属性,每个视图都关联着一个Layer
设置 创建视图图层 的 背景颜色,即为 视图 本身 的 背景颜色 可通过Debug查看
myView.layer.backgroundColor = [UIColor redColor].CGColor;
// myView.backgroundColor = [UIColor yellowColor];
设置图层的边界宽度
myView.layer.borderWidth = 10;
设置图层的边界颜色 ,默认为黑色
myView.layer.borderColor = [UIColor whiteColor].CGColor;
设置拐点的圆角半径, 可以巧妙的利用该方法画圆(将圆角半径设置为视图宽度的一般即可)
myView.layer.cornerRadius = 50;
添加一张图片
myView.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"btn_02"].CGImage);
将图片超出圆角半径的内容裁剪掉
myView.clipsToBounds = YES;
//myView.layer.masksToBounds = YES;
6.基础动画: 3种方式 --> 中心点移动/大小变化/旋转
CABasicAnimation *basicAnimation = [CABasicAnimation animation];
动画时间
basicAnimation.duration = 2;
动画重复次数
basicAnimation.repeatCount = 3;
basicAnimation.removedOnCompletion = YES;
//填充模式4中 至今木有弄懂 `backwards', `forwards', `both' and `removed'
// basicAnimation.fillMode = @"backwards";
6.1 中心点移动动画
basicAnimation.fromValue = [NSValue valueWithCGPoint: CGPointMake(50, 50) ];
basicAnimation.byValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
basicAnimation.keyPath = @"position";
6.2 大小变化动画
basicAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 300, 400)];
basicAnimation.keyPath = @"bounds";
6.3 旋转
basicAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4 + M_PI_2, 0, 0, 1)];
basicAnimation.keyPath = @"transform";
//注意:设置完动画后要添加动画
[myLayer addAnimation:basicAnimation forKey:nil];
7. 关键帧动画: 两种方式 --> 定义关键点/定义路径
CAKeyframeAnimation *keyFrameAni = [CAKeyframeAnimation animation];
keyFrameAni.duration = 2;
keyFrameAni.repeatCount = 3;
7.1 定义关键点
NSValue *value1 = [NSValue valueWithCGPoint: CGPointMake(50, 50) ];
NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(100, 200)];
NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
keyFrameAni.keyPath = @"position";
keyFrameAni.values = @[value1,value2,value3];
7.2 定义路径
CGMutablePathRef path = CGPathCreateMutable();
//CGPathAddEllipseInRect(path, nil, CGRectMake(50, 50, 300, 400));
CGPathAddArc(path, nil, 100, 100, 50, M_PI_2, M_PI, YES);
keyFrameAni.path = path;
CGPathRelease(path);
keyFrameAni.keyPath = @"position";
[myLayer addAnimation:keyFrameAni forKey:nil];
8. 转换动画 --> 可有立体效果
CATransition *transAnimaiton = [CATransition animation];
transAnimaiton.duration = 3;
transAnimaiton.type = @"cube";
transAnimaiton.subtype = @"fromTop";
[myLayer addAnimation:transAnimaiton forKey:nil];
UI- Layer的使用总结(附动画)的更多相关文章
- iOS开发笔记7:Text、UI交互细节、两个动画效果等
Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...
- 教你避雷!网页设计中常见的17个UI设计错误集锦(附赠设计技巧)
以下内容由摹客团队翻译整理,仅供学习交流,摹客iDoc是支持智能标注和切图的产品协作设计神器. 精心设计的用户界面对网站意义重大.具备所有最新功能和响应式设计有助于提高网站的搜索引擎排名,从而增加受众 ...
- UI控件之UIView与动画
UIView:用来展示用户的界面,响应用户的操作(继承自UIResponder) UIView的作用:绘图.动画.处理事件 UIView可以包含和管理子视图,并且决定子视图的位置大小 获取所有的子视图 ...
- Core Animation 文档翻译—附录A(Layer样貌相关属性动画)
前言 在渲染过程中,核心动画获取Layer的各种属性并以特定的顺序渲染他们.这个顺序决定了Layer的最终的样貌.本节将会阐述通过设置不同的Layer样貌相关属性对应产生的渲染结果. 注意:Mac ...
- NGUI Camera's raycast hit through the UI Layer issue
Raycast into GUI?http://forum.unity3d.com/threads/raycast-into-gui.263397/ << ; Ray myray = UI ...
- Android开发UI之给ListView设置布局动画效果
1.通过JAVA代码添加,资源文件基本上不修改 XML文件,只添加了一个ListView,就不贴XML文件的代码了. java代码: public class MainActivity extends ...
- UI设计篇·入门篇·简单动画的实现,为布局设置动画,用XML布置布局动画
不仅仅控件可以设置动画,一个布局也可以设置动画, 当给一个布局设置了动画的时候,这个布局里所包含的控件都会依赖执行这些动画. 为布局设置动画的实现步骤: 1.新建一个动画,设置需要实现的形式 2.新建 ...
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
- iOS CoreAnimation详解(一) 有关Layer的动画
以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...
随机推荐
- 006-shiro授权
一.授权流程 二.三种授权方式 2.1.编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject ...
- java 自制Tomcat Andorid IOS 端 证书
java 自制证书 最近做项目用到Https 需要自制各种证书,Tomcat 用的JKS 格式, Andorid 端使用 BKS 格式, IOS 端使用 P12格式正式, 以及各种证书格式之间的转换. ...
- org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类
<bean id="investorQueryConfigurer" class="org.springframework.beans.factory.config ...
- Spring框架学习之IOC(二)
Spring框架学习之IOC(二) 接着上一篇的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包 ...
- git使用基础
一.git介绍 git是由 Linus 开发的一种“分布式版本控制”软件,而在此之前,版本控制基本上都是“集中式版本控制”,如:CVS,SVN 等.两者的区别: 1. "集中式版本控制系统& ...
- 使用 libevent 和 libev 提高网络应用性能(IBM)
http://www.ibm.com/developerworks/cn/aix/library/au-libev/
- CSS流体(自适应)布局下宽度分离原则
CSS流体(自适应)布局下宽度分离原则 这篇文章发布于 2011年02月28日,星期一,00:48,归类于 css相关. 阅读 73990 次, 今日 5 次 by zhangxinxu from h ...
- Python面试题之集合推导式、字典推导式
集合推导式 集合推导式(set comprehensions)跟列表推导式也是类似的, 唯一的区别在于它们使用大括号{}表示. Code: sets = {x for x in range(10)} ...
- 深入理解JVM3
VM运行时数据区域 JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范(第二版)>的规定,JVM包括下列几个运行时数据区域 ...
- Facebook力推导航库:React Navigation使用详解
本文来自Songlcy投稿:文章地址:http://blog.csdn.net/u013718120/article/details/72357698 一.开源库介绍 今年1月份,新开源的react- ...