时间:2015-07-22 来源:

iOS开发-CALayer图层 【移动开发】

CALayer的基本使用 在iOS中web外包,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,html前端制作这些都是UIView

当UIView需要显示到屏幕上时,div页面会调用drawRect:方法进行绘图,承接网页前端外包并且会将所有内容绘制在自己的图层上网页html切图排版,绘图完毕后,网页html切图排版系统会将图层拷贝到屏幕上,承接网站前端就能做出跟UIView一样的界面效果

为了保证可移植性,承接网页制作QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

CALayer的属性 //宽度和高度 @property CGRect bounds; //位置(默认指中点,web外包具体由anchorPoint决定) @property CGPoint position; //锚点(x,决定了position的含义 @property CGPoint anchorPoint; //背景颜色(CGColorRef类型) @property CGColorRef backgroundColor; //形变属性 @property CATransform3D transform; //边框颜色(CGColorRef类型) @property CGColorRef borderColor; //边框宽度 @property CGFloat borderWidth; //圆角半径 @property CGFloat cornerRadius; //内容(比如设置为图片CGImageRef) @property(retain) id contents; 关于CALayer的疑惑 首先 CALayer是定义在QuartzCore框架中的(Core Animation) CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中的 UIColor、UIImage是定义在UIKit框架中的

还可以给图层添加动画div+css+js切图,来实现一些比较炫酷的效果

换句话说,网页重构报价UIView本身不具备显示的功能承接网站前端,是它内部的层才有显示功能

既然CALayer和UIView都能实现相同的显示效果,承接网站前端那究竟该选择谁好呢? 其实psd切图html,UIView多了一个事件处理的功能.也就是说web外包,CALayer不能处理用户的触摸事件,div切图排版而UIView可以 所以网页切图制作,如果显示出来的东西需要跟用户进行交互的话,网页切图制作用UIView;如果不需要跟用户进行交互div+css+js切图,用UIView或者CALayer都可以 当然,手机网页外包CALayer的性能会高一些承接网站前端,因为它少了事件处理的功能,页面div重构更加轻量级

其实UIView之所以能显示在屏幕上psd切图html,完全是因为它内部的一个图层

通过操作CALayer对象,psd切图html可以很方便地调整UIView的一些外观属性web外包,比如: 阴影 圆角大小 边框宽度和颜色 … …

其次 QuartzCore框架和CoreGraphics框架是可以跨平台使用的,web外包在iOS和Mac OS X上都能使用 但是UIKit只能在iOS中使用

在创建UIView对象时网页切图制作,通过UIView的layer属性可以访问这个层 @property(nonatomic,retain) CALayer *layer;

列举几个常见的Animatable Properties: bounds:用于设置CALayer的宽度和高度.修改这个属性会产生缩放动画 backgroundColor:用于设置CALayer的背景色.修改这个属性会产生背景色的渐变动画 position:用于设置CALayer的位置.修改这个属性会产生平移动画

position和anchorPoint

所有的非Root Layer,也就是手动创建的CALayer对象,承接网站前端都存在着隐式动画

隐式动画 每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)

什么是隐式动画? 当对非Root Layer的部分属性进行修改时,承接网页制作默认会自动产生一些动画效果 而这些属性称为Animatable Properties(可动画属性)

position和anchorPoint介绍 //CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0) 它的x、y取值范围都是0~1, 0.5), 10); [CATransaction commit]; CALayer图层实例 @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [UIView animateWithDuration:1 animations:^{ //缩放 _imageView.layer.transform = CATransform3DMakeRotation(M_PI, 1, 200, 0.5, 1, 0)]; [_imageView.layer setValue:rotation forKeyPath:@"transform"]; [_imageView.layer setValue:@M_PI forKeyPath:@"transform.rotation"]; [_imageView.layer setValue:@0.5 forKeyPath:@"transform.scale"]; // 平移x轴 [_imageView.layer setValue:@200 forKeyPath:@"transform.translation.x"]; }]; } - (void)imageLayer { // 圆形裁剪 _imageView.layer.cornerRadius = 50; // 超出layer边框的全部裁剪掉 _imageView.layer.masksToBounds = YES; _imageView.layer.borderColor = [UIColor whiteColor].CGColor; _imageView.layer.borderWidth = 2; } - (void)viewLayer { // 设置阴影透明度 _redView.layer.shadowOpacity = 1; // 设置阴影颜色 _redView.layer.shadowColor = [UIColor yellowColor].CGColor; // 设置阴影圆角半径 _redView.layer.shadowRadius = 10; // 设置圆角半径 _redView.layer.cornerRadius = 50; // 设置边框半径 _redView.layer.borderColor = [UIColor whiteColor].CGColor; // 设置边框半径 _redView.layer.borderWidth = 2; } @end 自定义涂层 @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 创建一个图层 CALayer *layer = [CALayer layer]; // 设置尺寸 layer.bounds = CGRectMake(0, 100, 100); // 设置颜色 layer.backgroundColor = [UIColor redColor].CGColor; // 设置内容 layer.contents = (__bridge id)[UIImage imageNamed:@"picture.png"].CGImage; [self.view.layer addSublayer:layer]; } @end $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 版权声明:本文为博主原创文章网页切图制作,未经博主允许不得转载.

点击次数:5168
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日android开发之Animations的使用(一) 【Web前端】2014年12月17日如何选择培训机构——送给想去培训机构朋友的忠言2014年01月28日腾讯笔试题(12016年11月08日金山WPS应用:三款最具特色插件2014年01月28日ViewPager的使用方法(实现左右滑动切换页面) 【编程语言】2015年02月11日若干年后,汉人将成为少数民族【编程语言】2015年01月24日06==函数(头文件,声明,封装) 【研发管理】2015年08月26日一些常用的JavaScript函数(json)附详细说明2014年01月29日判断表(临时表),存储过程是否存在 【移动开发】2015年04月24日类似QQ对话框上下部分可拖动代码2015年03月19日IOS-入门示例【Web前端】2014年12月01日RobotFrameWork--selenium2模拟firefox的UA 【编程语言】2015年09月09日父窗口获取弹出子窗口文本框的值2014年01月29日代码规范中常见问题举例说明 【编程语言】2014年12月03日oracle使用orderby排序null值如何处理2014年01月30日Win10生态圈:做圈外之人,知圈内之事【架构设计】2015年08月30日YouGottaCareAbouttheCode 【综合】2015年07月16日Chrome编译错误汇总【互联网】2015年03月17日ZOJ3693HappyGreatBG 【架构设计】2015年08月17日GetLastError的使用和返回值定义大全 【架构设计】2015年03月09日Android5.0新特性【综合】2015年01月19日FFmpeg编程学习笔记一 【编程语言】2015年04月08日红黑树 【移动开发】2014年12月10日CKEditorFCKEditor使用CKeditor3.0.1快速使用教程(含插入图片)2014年01月29日SpringExpressionLanguage(SpEL)-Spring表达式语言 【云计算】2015年03月30日图像滤波函数imfilter函数的应用及其扩展 【Web前端】2015年07月06日Keystone高可靠性部署与性能测试 【移动开发】2014年12月09日剑指offer面试题12—打印1到最大的n位数 【综合】2015年05月05日IOS中用UIStoryBoard类初始化跳转控制器 【编程语言】2014年12月25日Log4net保存自定义信息到数据库【数据库】2015年01月07日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)