IOS CALayer(一)
对于一个app的好坏,我们首要判断的便是app的界面,而界面的建立则是在图形的处理基础上的,说到图形处理又不得不提及Quartz2D,CALayer。
在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。
其实UIView之所以能显示在屏幕上,完全是因为它内部的一个层。
在创建UIView对象时,UIView内部会自动创建一个层(即CALayer对象),通过UIView的layer属性可以访问这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,于是就完成了UIView的显示。
换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能。
首先展示一下无任何操作的imageView。
//
// ViewController.m
// CX - CALayer(一)
//
// Created by ma c on 16/3/19.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width - , )]; imageView.image = [UIImage imageNamed:@"nvshen.jpg"]; [self.view addSubview:imageView]; } @end
设置阴影的效果
//
// ViewController.m
// CX - CALayer(一)
//
// Created by ma c on 16/3/19.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width - , )]; imageView.image = [UIImage imageNamed:@"nvshen.jpg"];
//设置阴影的颜色
imageView.layer.shadowColor = [UIColor orangeColor].CGColor;
//设置阴影的偏移量
imageView.layer.shadowOffset = CGSizeMake(, );
//设置阴影的透明度,1为不透明。
imageView.layer.shadowOpacity = 0.5; [self.view addSubview:imageView]; } @end
设置圆角的效果
//
// ViewController.m
// CX - CALayer(一)
//
// Created by ma c on 16/3/19.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width - , )]; imageView.image = [UIImage imageNamed:@"nvshen.jpg"];
// //设置阴影的颜色
// imageView.layer.shadowColor = [UIColor orangeColor].CGColor;
// //设置阴影的偏移量
// imageView.layer.shadowOffset = CGSizeMake(5, 5);
// //设置阴影的透明度,1为不透明。
// imageView.layer.shadowOpacity = 0.5;
//设置圆角的半径
imageView.layer.cornerRadius= ;
//使视图支持圆角
imageView.layer.masksToBounds = YES;
//masksToBounds 设置为YES 阴影效果将失效。 [self.view addSubview:imageView]; } @end
设置边框的效果
//
// ViewController.m
// CX - CALayer(一)
//
// Created by ma c on 16/3/19.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width - , )]; imageView.image = [UIImage imageNamed:@"nvshen.jpg"];
// //设置阴影的颜色
// imageView.layer.shadowColor = [UIColor orangeColor].CGColor;
// //设置阴影的偏移量
// imageView.layer.shadowOffset = CGSizeMake(5, 5);
// //设置阴影的透明度,1为不透明。
// imageView.layer.shadowOpacity = 0.5;
// //设置圆角的半径
// imageView.layer.cornerRadius= 10;
// //使视图支持圆角
// imageView.layer.masksToBounds = YES;
// //masksToBounds 设置为YES 阴影效果将失效。
//设置边框的宽度
imageView.layer.borderWidth = ;
//设置边框的颜色
imageView.layer.borderColor = [UIColor orangeColor].CGColor; [self.view addSubview:imageView]; } @end
设置旋转的效果
//
// ViewController.m
// CX - CALayer(一)
//
// Created by ma c on 16/3/19.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width - , )]; imageView.image = [UIImage imageNamed:@"nvshen.jpg"];
// //设置阴影的颜色
// imageView.layer.shadowColor = [UIColor orangeColor].CGColor;
// //设置阴影的偏移量
// imageView.layer.shadowOffset = CGSizeMake(5, 5);
// //设置阴影的透明度,1为不透明。
// imageView.layer.shadowOpacity = 0.5;
// //设置圆角的半径
// imageView.layer.cornerRadius= 10;
// //使视图支持圆角
// imageView.layer.masksToBounds = YES;
// //masksToBounds 设置为YES 阴影效果将失效。
// //设置边框的宽度
// imageView.layer.borderWidth = 5;
// //设置边框的颜色
// imageView.layer.borderColor = [UIColor orangeColor].CGColor;
//设置旋转角度
//参数分别为,旋转角度,旋转轴 x y z
imageView.layer.transform = CATransform3DMakeRotation(M_PI_4, , , ); [self.view addSubview:imageView]; } @end
IOS CALayer(一)的更多相关文章
- iOS CALayer应用详解
跟着大神一起进步,本篇博客原文地址:http://blog.csdn.net/hello_hwc?viewmode=contents 一 CALayer是什么? Layers是绘图和动画的基础, L ...
- IOS CALayer(二)
UIview内部有个默认的CALayer对象层,虽然我门不可以重新创建它,但是我门可以再其上面添加子层. 我们知道,UIView有 addSubview:方法,同样,CALayer也有addSubla ...
- iOS CALayer动画中使用的3个tree
在网上经常看到关于layer的tree的描述,不太理解,今天找到了官方文档,原文在Core Animation Programming Guide 中. Layer Trees Reflect Dif ...
- IOS CALayer是什么
大家在开发IOS程序时,经常会遇到self.view.layer这个东西,我以前也是不求甚解,后来觉得有必要整理下. 简单介绍layer: 在IOS中,你能看得见摸得着的东西都是UIView,比如一个 ...
- iOS - CALayer 绘图层
1.CALayer 绘图层 在 iOS 系统中,你能看得见摸得着的东西基本上都是 UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是 UIView.其实 UIView 之 ...
- IOS CALayer的属性和使用
一.CALayer的常用属性 1.@propertyCGPoint position; 图层中心点的位置,类似与UIView的center:用来设置CALayer在父层中的位置:以父层的左上角为原点( ...
- iOS CALayer使用
CALayer使用 iOS的设备中,我们之所以能看到各种各样的控件.文字.图片,都是Core Animation框架的功劳.它通过图层的合成,最终显示在屏幕上.而今天这篇文章讲的就是Core Anim ...
- iOS CALayer之CAEmitterLayer粒子发射器的神奇效果
https://www.jianshu.com/p/c54ffd7412e7 想必以前QQ空间的点赞效果大家都知道吧,点赞之后按钮周围会有一圈爆裂的小圆点:还有微信的红包雨表情动画等,以及烟花,火焰效 ...
- iOS CALayer应用详解(2)
参考博客:http://blog.csdn.net/hello_hwc?viewmode=list 如果你对CALayer 还没有一个清晰的理解,欢迎看一下前面的博客: http://www.cnbl ...
随机推荐
- 获取当前 Python 版本
方法一 >>> from platform import python_version >>> print python_version() 2.7.8 方法二 & ...
- Android学习笔记之图片轮播...
PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...
- python反射机制深入分析
对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...
- 谈Mysql索引
myisam和innodb的索引有什么区别? 两个索引都是B+树索引,但是myisam的表存储和索引存储是分开的,索引存储中存放的是表的地址.而innodb表存储本身就是一个B+树,它是用主键来做B+ ...
- ASP.NET MVC5--添加验证
1.在Model类里面添加验证,代码如下: public class Movie { public int ID { get; set; } [StringLength(,MinimumLength= ...
- AC自动机 - 多模式串匹配问题的基本运用 + 模板题 --- HDU 2222
Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Orleans之Hello World
接触Orleans 有一段时间了,之前也翻译了一系列官网文档,今天我们就来一个实际的例子,来看看到底如何用这个东西来开发项目,当然经典的也是醉人的,我们就从HelloWorld开始吧. 通过前面的知识 ...
- Unity多语言本地化改进版
简介 之前捣鼓过一个通过csv配置游戏多语言支持的小工具,但是发现使用过程中,通过notepad++去进行转码很不方便,并且直接将配置的csv不加密的放在游戏中心里感觉不是很踏实 于是乎~~ 新的方案 ...
- IIS启动网站出错的几个解决方法
在ASP.NET项目中使用了IIS服务器,由于系统是XP的,而在装系统的时候IIS没有一起装,所以从网上下载的IIS5.0版本(其它版本XP是用不了的).但是在使用的过程中老是出问题,每次调试好后,过 ...
- Azure开发者任务之三:理解Azure应用程序(上)
作为Windows Azure的托管服务被设计和开发的应用程序由这两部分组成: 1,托管代码 2,XML配置文件 托管代码对应不同的角色 XML文件对应不同的配置设置 我们可以看一下下面这张图,它详细 ...