1、视图的显示基于图层,通过控制图层同样能控制显示效果,获取当前的视图的layer,并为其增加圆角边框。

  //设置layer边框的宽度为2
view.layer.borderWidth=;
//如果需要为layer添加颜色需要转换为CGColor对象
view.layer.borderColor=[UIColor greenColor].CGColor;
//将边框的圆角半径设置为10
view.layer.cornerRadius=;

2、通过layer设置视图的阴影

    // 1 设置当前的阴影颜色
view.layer.shadowColor=[UIColor blackColor].CGColor;
// 2 设置当前凸出来的阴影,通过该方法来控制当前阴影凸出来的程度,从而达到所需要的效果
view.layer.shadowOffset=CGSizeMake(, );
// 3 设置当前的透明度
view.layer.shadowOpacity=0.5;

3、自定义layer

    CALayer *layer=[CALayer layer];
layer.borderColor=[UIColor redColor].CGColor;
layer.borderWidth=;
layer.cornerRadius=;
layer.backgroundColor=[UIColor redColor].CGColor;
layer.bounds=CGRectMake(, , , );
//设置position控制当前位置
layer.position=CGPointMake(, );
//设置锚点用来控制position的位置,锚点的大小范围为0-1,可以理解为按照比例来定位图层的位置点,将该点定位到position属性所指的位置上去,这样通过两个属性便能很好的控制当前图层的位置
layer.anchorPoint=CGPointMake(, );
//将当前的图层增加到当前显示的图层
[self.view.layer addSublayer:layer];

4、layer 3D仿射变换

  1、平移

  1.1、3D平移分为X Y Z 三维,分别设置数值会沿着设置的方向平移 

t1:X轴偏移位置,往下为正数。

t2:Y轴偏移位置,往右为正数。

t3:Z轴偏移位置,往外为正数。

NSValue * nav=[NSValue valueWithCATransform3D: CATransform3DMakeTranslation(t1, t2, t3)];
[view.layer setValue:nav forKey:@"transform"];

  1.2、通过KVC赋值,如下表格所示

//沿着x方向平移100
[view.layersetValue:@() forKeyPath:@"transform.translation.x"]; //沿着y方向平移100
[view.layersetValue:@() forKeyPath:@"transform.translation.y"]; //沿着z方向平移100
[view.layersetValue:@() forKeyPath:@"transform.translation.z"];

  2、旋转

  2.1、旋转有四个参数,第一个为旋转的角度,为弧度表示,后面三个值分别对应三个轴,可以设置围绕不同轴旋转

x:沿着X轴方向旋转,值范围-1 和1之间

y:沿着Y轴方向旋转,值范围-1和1之间

z:沿着Z轴方向旋转,值范围-1和1之间

    [UIView animateWithDuration: animations:^{
view.layer.transform=CATransform3DMakeRotation(M_PI, , , -);
}];

  2.2、通过KVC赋值

//沿着z轴旋转
[view.layer setValue:@(M_PI_2) forKeyPath:@"transform.rotation.z"]; //沿着x轴旋转
[view.layer setValue:@(M_PI_2) forKeyPath:@"transform.rotation.x"];

  3、缩放

  3.1、三个参数分别为沿着每个轴缩放的倍数,顺序依次为 X Y Z三维。

view.layer.transform=CATransform3DMakeScale(, 1.5, );

  3.2、通过KVC赋值

//沿着x轴方向放大1.5倍数
[view.layer setValue:@(1.5)forKeyPath:@"transform.scale.x"]; //沿着y轴方向放大1.5倍数
[view.layer setValue:@(1.5)forKeyPath:@"transform.scale.y"]; //沿着z轴方向放大1.5倍数
[view.layer setValue:@(1.5)forKeyPath:@"transform.scale.z"];
作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

layer和3D仿射变换的更多相关文章

  1. 3D几何变换

    3D点:非齐次坐标x(x,y,z) (x表示向量矢量) 齐次坐标:x~=(x~,y~,z~,w~)=w~(x,y,z,1)=w~x~         增广矢量:x—=(x,y,z,1) w~=0时,齐 ...

  2. 视频特效制作:如何给视频添加边框、水印、动画以及3D效果

    2014-12-08 09:47 编辑: suiling 分类:iOS开发 来源:叶孤城的blog 招聘信息: iOS手机软件开发工程师 iOS工程师 Web后端高级开发工程师 iOS软件工程师 ja ...

  3. 【CSS3练习】3D盒子制作

    先发个3D盒子最终效果图 在线效果预览:http://dtdxrk.github.io/game/css3-demo/box-3d.html 制作步骤1:创建基本结构 分布把6个面定义到3×3的画布上 ...

  4. iOS之CALayer属性简介

    /* CoreAnimation - CALayer.h Copyright (c) 2006-2017, Apple Inc. All rights reserved. */ #import < ...

  5. [zz]The Royal Treatment

    http://www.cgw.com/Publications/CGW/2012/Volume-35-Issue-4-June-July-2012/The-Royal-Treatment.aspx T ...

  6. CALayer的分析

    转载地址:  http://my.oschina.net/u/2340880/blog/536048 iOS开发CoreAnimation解读之二——对CALayer的分析 一.UIView中的CAL ...

  7. Javascript高性能动画与页面渲染

    转自:http://www.infoq.com/cn/articles/javascript-high-performance-animation-and-page-rendering No setT ...

  8. iOS开发——UI篇OC&transform详解

    transframe属性详解 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建“基 ...

  9. Android图形合成和显示系统---基于高通MSM8k MDP4平台

    介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...

随机推荐

  1. 【基本功】深入剖析Swift性能优化

    简介 2014年,苹果公司在WWDC上发布Swift这一新的编程语言.经过几年的发展,Swift已经成为iOS开发语言的“中流砥柱”,Swift提供了非常灵活的高级别特性,例如协议.闭包.泛型等,并且 ...

  2. JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现

    1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装j ...

  3. Spring 定时操作业务需求

    1.定时分析 在业务需求中有的需要检测用户的状态,通过对用户状态的检测做出对此状态相应的操作,如果这种检测由运营人工检测,不仅工作量大,而且准确性不高,人工无法很好的完成工作: 问题根源:在检测用户状 ...

  4. Python内存管理方式和垃圾回收算法解析

    在列表,元组,实例,类,字典和函数中存在循环引用问题.有 __del__ 方法的实例会以健全的方式被处理.给新类型添加GC支持是很容易的.支持GC的Python与常规的Python是二进制兼容的. 分 ...

  5. mysql高性能索引

    独立索引: 独立索引是指索引列不能是表达式的一部分,也不能是函数的参数 例1: SELECT actor_id FROM actor WHERE actor_id+1=5 --这种写法,就算在acto ...

  6. 解决mongo 端口占用问题

    在打开mongod之后如果不用了就按ctrl + c ,就不会出现以下的问题了 执行mongod报错 mongod 2016-08-03T14:31:15.691+0800 I CONTROL [in ...

  7. PHP 操作MySQL时mysql_connect( )和Mysqli( )的两种报错机制

    刚开始使用PHP连接MySQL数据库的时候,如果数据库连接不成功或者,对MySQL数据库进行增删改查等操作的时候,SQL语句存在错误,而在执行PHP文件的时候,浏览器并不会抛出错误的原因,一般是空白显 ...

  8. 模板 SBT

    傻逼树模板 struct SBT{ const static int maxn = 1e5 + 15; int lft[maxn] , rht[maxn] , key[maxn] , s[maxn] ...

  9. NOIP 2002提高组 选数 dfs/暴力

    1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,…, ...

  10. 客户端程序获取自己的ip、isp、地理位置等信息

    @ 比如说你需要收集用户信息,又或者要通过这些信息让用户登陆合适的服务器(北京联通用户登陆北京联通服务器). @ 淘宝和新浪都提供了类似的API,你只需要发送一个http请求,它就返回一个json格式 ...