layer和3D仿射变换

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

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

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

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

3、自定义layer

    CALayer *layer=[CALayer layer];layer.borderColor=[UIColor redColor].CGColor;layer.borderWidth=2;layer.cornerRadius=10;layer.backgroundColor=[UIColor redColor].CGColor;
layer.bounds=CGRectMake(0, 0, 200, 100);//设置position控制当前位置
layer.position=CGPointMake(100, 100);
//设置锚点用来控制position的位置,锚点的大小范围为0-1,可以理解为按照比例来定位图层的位置点,将该点定位到position属性所指的位置上去,这样通过两个属性便能很好的控制当前图层的位置
layer.anchorPoint=CGPointMake(0, 0);
//将当前的图层增加到当前显示的图层[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:@(100) forKeyPath:@"transform.translation.x"];//沿着y方向平移100
[view.layersetValue:@(100) forKeyPath:@"transform.translation.y"];//沿着z方向平移100
[view.layersetValue:@(100) forKeyPath:@"transform.translation.z"];

  2、旋转

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

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

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

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

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

  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, 1.5, 1);

  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/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器维修质保合同,服务器维护保修合同(标准版本).pdf

服务器维护保修合同甲 方 :乙 方 :。服务器维护保修合同甲 方:住 所:法定代表人:联 系 电 话 : 传 真:联 系 地 址 :邮 政 编 码 :乙 方:住 所:法…

React Native之Android原生通过DeviceEventEmitter发送消息给js

1 问题 Android原生向js发消息,并且可以携带数据 2 实现原理 Android原生可以使用RCTEventEmitter来注册事件,然后这里需要指定事件的名字,然后在js那端进行监听同样事件的名字监听,就可以收到消息得到数据 Android注册关键代码 reactContext.getJSModule(DeviceEventManag…

knex 单表查询_knex.js

软件简介knex.js 是一个查询构建器,用于 PostgreSQL, MySQL 和 SQLite3。它设计灵活,轻便和有趣。特性:例子:var knex require(knex)({dialect: sqlite3,connection: {filename: ./data.db}});// Create a tableknex.schema.crea…

IOS-网络(大文件下载)

一、不合理方式 1 //2 // ViewController.m3 // IOS_0131_大文件下载4 //5 // Created by ma c on 16/1/31.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import "ViewController.h" 10 11 interface ViewController ()<NSURLConne…

地理素养的核心构成和主要特点

素养教育已成为21世纪国际教育发展的重大课题和紧迫任务。新一轮地理课程改革把地理素养置于地理课程目标的核心地位。因此,统一认识和准确把握地理素养的内涵与特质,对于促进学生的全面发展具有十分重要的意义。 一、地理素养的内涵与组成 地理素养是指学习者经过地理学习后…

【开题报告】基于SpringBoot的电子二手产品交易平台的设计与实现

1.研究背景 随着互联网的快速发展和普及&#xff0c;电子商务行业蓬勃发展&#xff0c;二手产品交易作为电子商务领域的一个重要分支也得到了广泛关注。传统的线下二手交易存在一些问题&#xff0c;例如信息不对称、交易风险高、交易流程繁琐等&#xff0c;这些问题限制了用户…

Blazor University (9)组件 — 代码生成 HTML 属性

原文链接&#xff1a;https://blazor-university.com/components/code-generated-html-attributes/代码生成 HTML 属性Razor 在条件 HTML 输出或在 for 循环中输出 HTML 时非常棒&#xff0c;但在元素本身内的条件代码方面&#xff0c;事情就有点棘手了。例如&#xff0c;以下代…

python重定向_在Python中使用urlopen()防止“隐藏”重定向

我正在使用BeautifulSoup进行网页抓取,并且在使用urlopen时遇到特定类型网站的问题.网站上的每个商品都有其独特的页面,并且商品具有不同的格式(例如&#xff1a;500 mL,1L,2L等). 当我使用Internet浏览器打开产品的URL(www.example.com/product1)时,会看到500 mL格式的图片,有…

CentOS安装JAVA JDK

普通情况下&#xff0c;我们都要将linux自带的OPENJDK卸载掉。然后安装SUN的JDK。首先查看Linux自带的JDK是否已安装。 输入例如以下命令&#xff0c;查看已经安装的JAVA版本号信息。 Linux代码 java -version 输入例如以下命令。查看JDK的信息。Linux代码 rpm -qa|grep j…

Android之解决Android8.0手机(Notification)收不到自定义消息通知以及其它手机得到数据不同步

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

世界史

评价华盛顿&#xff1a;打破一个旧世界需要勇气与胆魄&#xff0c;建设一个新世界却需要耐心与智慧。

安装bigdesk后es无法启动_安装天正后,探索者无法双击启动?

用户经常会出现&#xff0c;安装天正后&#xff0c;探索者无法双击启动&#xff0c;或者是图纸无法拖拽入CAD中&#xff0c;如何解决&#xff1f;答&#xff1a;天正安装完成后&#xff0c;默认将CAD的acad.exe程序&#xff0c;添加了“以管理员身份运行此程序”而导致的&#…

服务器安全维护包含,服务器安全维护包含

服务器安全维护包含 内容精选换一换本章节介绍如何使用管理控制台向导创建裸金属服务器。创建裸金属服务器时&#xff0c;您需要配置规格、镜像、存储、网络、安全组等必备信息。同时&#xff0c;向导也提供了丰富的扩展配置功能&#xff0c;方便您进行个性化部署和管理。在创建…

VS2008系统开发背景图片的添加及注意事项

最初的做法是&#xff0c;直接将父窗体的Image属性改成背景图片&#xff0c;并将其BackgroundImageLayout属性设置为stretch&#xff0c;结果发现这样做的结果是系统运行超级慢&#xff0c;便考虑用代码实现&#xff0c;如下&#xff1a; //this.BackgroundImage System.Draw…

JavaScript中的的面向对象中的一些知识

JavaScript中的的面向对象中的一些知识 function Cat(name,age){return {name:name,age:age }}//构造函数function Dog(name,age){this.namename;this.ageage; }function show(){var c1new Cat("cat1",18);var c2new Cat("cat2",19);//Javascript还提…

C# 发出异步的Get请求

下列的下载代码示例是 HttpClientSample。它以不同的方式异步调用Web 服务。为了演示本例使用的不同方法&#xff0c;使用了命令行参数。示例代码使用了以下名称空间&#xff1a;System System.Linq System.Net System.Net.Http System.Net.Http.Headers System.Threading Sy…

python用pandas读取excel_Python使用pandas读取Excel文件数据和预处理小案例

假设有Excel文件data.xlsx&#xff0c;其中内容为 现在需要将这个Excel文件中的数据读入pandas&#xff0c;并且在后续的处理中不关心ID列&#xff0c;还需要把sex列的female替换为1&#xff0c;把sex列的male替换为0。本文演示有关的几个操作。 &#xff08;1&#xff09;导入…

shader 3 rendering path

渲染通道&#xff0c; rendering path。 vertexlit&#xff0c; forward 和 Deferred lighting 旧有的非统一架构下&#xff1a; 分为顶点着色引擎和像素渲染通道 渲染通道是GPU负责给图像配色的专门通道&#xff1b; 越多&#xff0c;填充效率越高&#xff0c;流畅性越好。 ht…

《帝王三部曲》——二月河

前一段时间断断续续的在看二月河写的《帝王三部曲》中的《雍正王朝》。写的真棒&#xff01;然后又迫不及待地去读远上搜索下载了三部曲全本&#xff0c;可惜&#xff0c;下载到现在一直未去看…… 生活总是这样&#xff0c;忙忙碌碌的……欲望太多。 希望自己以后做事情&#…

React Native之Props(属性)和State(状态)和简单样式简单使用

1 Props(属性)和State(状态)和简单样式简单使用App.js代码如下 /*** Sample React Native App* https://github.com/facebook/react-native** format* flow*/import React, {Component} from react; import {Platform, StyleSheet, Text, View, NativeModules, DeviceEvent…