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. JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

    1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再 ...

  2. hdu 2275 Kiki & Little Kiki 1 水题

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2275 这个题比较简单,所以就没有测试样例提供给大家,基本把题目的样例过了就可以了 题目大意 给你一串操作, ...

  3. odoo打包下载

    view 视图中下载按钮的编辑 <record id="action_download_zip" model="ir.actions.server"> ...

  4. type与instance区别

    class Foo(object): pass class Bar(Foo): pass obj = Bar() # isinstance用于判断,对象是否是指定类或其派生类的实例 print(isi ...

  5. django 动态url 可变

    首先在urls里面改,name=让一个映射敷个名字. 然后到books——list页面让编辑按钮改成这种可变的映射模式.

  6. [Agc011F] Train Service Planning

    [Agc011F] Train Service Planning 题目大意: 有n+1个车站,n条轨道,第i条轨道联通i-1和i车站,通过它要花a[i]时间,这条轨道有b[i]=1或2条车道,也就是说 ...

  7. 【Dijkstra】POJ1062-昂贵的聘礼

    由于物品编号从1开始,我们假定0也是一个物品作为起点,它到其它物品的距离就是各个物品的原始价值.开始时,如果两种物品主人的等级限制M在规定范围以内,且j能用i替换,则将优惠价格视作从i到j的一条权值为 ...

  8. 【洛谷】3469:[POI2008]BLO-Blockade【割点统计size】

    P3469 [POI2008]BLO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每 ...

  9. NOIP 2008 传纸条 NOIP 2000 方块取数 多线程DP

    思路都是一样,建立一个四维dp然后跑一发就完了 当然,也可以像我这么帅的人,降成三维再傻傻的跑一发啦啦啦~ #include<iostream> #include<stdio.h&g ...

  10. PostgreSQL各命令行工具功能说明

    I. SQL 命令 II. PostgreSQL 客户端应用 clusterdb -- 聚簇一个PostgreSQL数据库 createdb -- 创建一个新的PostgreSQL数据库 create ...