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. 如何保证Redis中的数据都是热点数据

    redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略.redis 提供 6种数据淘汰策略:volatile-lru:从已设置过期时间的数据集(server.db[i].expires) ...

  2. Linux设备驱动模型(sysfs)

    <总线模型概述> 随着技术的发展,系统的拓扑结构也越来越复杂,对热插拔.跨平台移植性的要求越来越高,从Linux2.6内核开始提供全新的设备模型.将所有的驱动挂载到计算机的总线上(比如US ...

  3. ARM 寄存器

    ARM总共有37个寄存器 ARM寄存器物理分类 通用寄存器:1:不分组寄存器(R0--R7) 2:分组寄存器(R8-R14) 3:程序计数器(R15)(注意:又名pc指针) 程序状态寄存器:1:CPS ...

  4. django使用admin

    1.在应用下的admin.py添加 #!/usr/bin/python # coding:utf-8 from django.contrib import admin from .models imp ...

  5. sklearn六大板块

    六大板块 分类 回归 聚类 数据降维 数据预处理 特征抽取 统一API estimator.fit(X_train,[y_train]) estimator.fit(X_train,[y_train] ...

  6. 【BZOJ 2986】 莫比乌斯函数+容斥原理

    2986: Non-Squarefree Numbers Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 337  Solved: 156 Descri ...

  7. CI Weekly #15 | 据说新版 flow.ci Dashboard 界面很酷

    好久不见 :) 最近工程师们卯足了劲,全新的 flow.ci dashboard 页面 已经与所有用户见面了.更快捷地创建项目,构建列表页面新增分支,Pull Request 界面:侧边栏新增构建任务 ...

  8. Codeforces Beta Round #37 C. Old Berland Language 暴力 dfs

    C. Old Berland Language 题目连接: http://www.codeforces.com/contest/37/problem/C Description Berland sci ...

  9. sql中如何统计一字段中字符串的个数

    declare @s varchar(100)set @s='156434A27kAsdABCiosd-01&**('--找出现的次数select len(@s)-len(replace(@s ...

  10. jmeter3.3—插件管理器的安装

    一.介绍JMeter Plugins 一直以来, JMeter Plugins 为我们提供了很多高价值的JMeter插件,比如: 用于服务器性能监视的 PerfMon Metrics Collecto ...