CALayer创建图层(转)
一.添加一个图层 
  添加图层的步骤: 
  1.创建layer 
  2.设置layer的属性(设置了颜色,bounds才能显示出来) 
  3.将layer添加到界面上(控制器view的layer上)
@interface ViewController ()
@property(nonatomic,strong) UIView *customView;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    /** 1.创建一个layer **/
    //使用对象方法创建
    //CALayer *layer = [[CALayer alloc] init];
    //使用类方法创建
    CALayer *layer = [CALayer layer];
    /** 2.设置layer的属性 **/
    layer.backgroundColor = [UIColor brownColor].CGColor;
    layer.bounds = CGRectMake(,
                              ,
                              ,
                              );
    layer.position = CGPointMake(, );
    /**  3.把layer添加到界面上 **/
    [self.view.layer addSublayer:layer];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
@end
二.添加一个显示图片的图层
@interface ViewController ()
@property(nonatomic,strong) UIView *customView;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
//创建一个layer
CALayer *layer = [CALayer layer];
//设置layer的属性
layer.bounds = CGRectMake(,,,);
layer.position = CGPointMake(, );
//设置需要显示的图片
layer.contents = (id)[UIImage imageNamed:@"logo.jpg"].CGImage;
//设置圆角半径为10
layer.cornerRadius = ;
//如果设置了图片,那么需要设置这个属性YES才能显示圆角效果
layer.masksToBounds = YES;
//设置边框
layer.borderWidth = ;
layer.borderColor = [UIColor brownColor].CGColor;
[self.view.layer addSublayer:layer];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
} @end
三.CGColorRef和CGImageRef数据类型 
  简单说明CALayer是定义在QuartzCore框架中的。CGImageRef, CGColorRef两种数据类型是定义在CoreGraphics框架中的。UIColor,UIImage是定义在UIKit框架中的。 
其次,QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用,但是UIKit只能在iOS中使用。 
因此,为了保证可移植性,QuartzCore不能使用UIImage,UIColor,只能使用CGImageRef,CGColorRef。 
不过很多情况下,可以通过UIKit对象的特定方法,得到CoreGraphics对象,比如UIImage的CGImage方法可以返回一个CGImageRef。
四.UIView和CALayer的选择 
  可以发现,前面的2个效果不仅可以通过添加层来实现,还可以通过添加UIView来实现。既然CALayer和UIView都能实现相同的显示效果,那究竟该选择谁好呢? 
其次,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以。 
所以,在选择的过程中,需要考虑到实际的情况,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以。 
当然,CALayer的性能会高一些,因为它少了事件处理的能力,更加轻量级。
CALayer创建图层(转)的更多相关文章
- iOS开发UI篇—CAlayer(创建图层)
		
iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...
 - iOS - CALayer 绘图层
		
1.CALayer 绘图层 在 iOS 系统中,你能看得见摸得着的东西基本上都是 UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是 UIView.其实 UIView 之 ...
 - ArcGIS api for javascript——明确的创建图层列表
		
描述 本例展示了如何确切地创建一个地图服务里的图层列表.这个列表由HTML checkboxe组成,可用用于开关图层的可见性. 函数updateLayerVisibility()包含开关图层的逻辑.函 ...
 - ArcGIS api for javascript——动态创建图层列表
		
描述 本例循环地图服务里的所有图层并增加每个图层到一个带checkbox的列表,checkbox能设置图层的显示或隐藏.动态创建列表的优势是所有的图层都会包含在列表中,即使服务器管理员删除或增加了图层 ...
 - gimp怎么移动选取中的图像并创建图层
		
gimp怎么移动选取中的图像并创建图层 https://jingyan.baidu.com/article/414eccf6bf4d6e6b431f0a3b.html 听语音 原创 | 浏览:1148 ...
 - NX二次开发-UFUN创建图层类别UF_LAYER_create_category
		
NX11+VS2013 #include <uf.h> #include <uf_layer.h> UF_initialize(); //创建图层类别 UF_LAYER_cat ...
 - IOS第18天(2,CALayer自定义图层)
		
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
 - [iOS Animation]-CALayer 专用图层
		
专用图层 复杂的组织都是专门化的 Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animati ...
 - 12.22笔记(关于CALayer//Attributes//CALayer绘制图层//CALayer代理绘图//CALayer动画属性//CALayer自定义子图层//绘图pdf文件//绘图渐变效果)
		
12.22笔记 pdf下载文件:https://www.evernote.com/shard/s227/sh/f81ba498-41aa-443b-81c1-9b569fcc34c5/f033b89a ...
 
随机推荐
- [转]ASP.NET Core / MVC 6 HttpContext.Current
			
本文转自:http://www.spaprogrammer.com/2015/07/mvc-6-httpcontextcurrent.html As you know with MVC 6, Http ...
 - CheckBox 样式
			
.cb td { width: 100px; } .cb label { display: inline-block; ...
 - android框架Java API接口总注释/**@hide*/和internal API
			
Android有两种类型的API是不能经由SDK访问的 l 第一种是位于com.android.internal包中的API我,位于frameworks/base/core/java/com/andr ...
 - 移动H5页面,Android手机下,input获取焦点弹出系统虚拟键盘时,挡住input解决方法
			
最近在写移动端页面的时候,遇到一个问题,在Android手机下,虚拟键盘会将input框遮挡住,具体情况如下图所示: 正常页面显示 IOS端显示情况 Android端显示情况 解决方式: <t ...
 - java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ 解决方案
			
//第一个异常 Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysq ...
 - hibernate从零开始到各种映射
			
ORM(对象/关系数据库映射) 对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.它完成了面向对象的编程语言到 ...
 - 前端给div加滚动条样式修改
			
<!DOCTYPE html> <html lang="en"> <head> <meta chars ...
 - Ubuntu16.04安装Docker1.12+开发实例+hello world+web应用容器
			
本次主要是详细记录Docker1.12在Ubuntu16.04上的安装过程,创建Docker组(避免每次敲命令都需要sudo),Docker常用的基本命令的总结,在容器中运行Hello world,以 ...
 - hibernate 性能优化之 1+N 问题
			
1. 注意 session.clear()的运用,尤其在不断分页查询的时候 a) 在一个大集合中进行遍历,遍历 msg,去除其中的含有敏感字样的对象 b) 另外一种形式的内存泄漏 面试题:Java 有 ...
 - tcp/ip 调优示例
			
# Kernel sysctl configuration file for Linux # # Version 1.12 - 2015-09-30 # Michiel Klaver - IT Pro ...