CALayer -- 备忘
CALayer
layer是层,每个view上都会最少有一个layer,view上的可视化内容其实都是层。
CALayer展示实例
let customView = UIView(frame: CGRectMake(0, 0, 100, 100))
customView.center = view.center
view.addSubview(customView) let layer = customView.layer
layer.backgroundColor = UIColor.brownColor().CGColor
layer.masksToBounds = true
layer.cornerRadius = 50.0
layer.borderWidth = 2
layer.borderColor = UIColor.blackColor().CGColor
layer.shadowColor = UIColor.blackColor().CGColor
layer.shadowOpacity = 0.8
layer.shadowOffset = CGSizeMake(15, 5)
layer.contents = UIImage(named: "icon.png")?.CGImage
上面是一些常用的属性,更多属性请自行参考:
- backgroundColor:背景颜色
- masksToBounds:将超过layer展示范围的内容剪掉
- cornerRadius:设置圆角
- borderWidth:边框宽度
- borderColor:边框颜色
- shadowColor:阴影颜色
- shadowOpacity:阴影的透明度 0.0 ~ 1.0
- shadowOffset:阴影的位置 (masksToBounds为true时 不显示阴影)
- contents:设置图层上的内容
CALayer的显式动画和隐式动画
// 先把layer添加到主图层上
let customLayer = CALayer()
customLayer.bounds = CGRectMake(0.0, 0.0, 100, 100)
customLayer.position = CGPointMake(150, 200)
customLayer.backgroundColor = UIColor.blackColor().CGColor
view.layer.addSublayer(customLayer) self.customLayer = customLayer override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { // 开启事务
CATransaction.begin()
// 设置动画时间
CATransaction.setValue(NSNumber(double: 2.0), forKey: kCATransactionAnimationDuration)
customLayer.position = CGPointMake(50.0, 50.0)
customLayer.backgroundColor = UIColor.redColor().CGColor
customLayer.cornerRadius = 50.0
// 提交事务
CATransaction.commit()
}
上面的例子是执行显示动画,这样一些不具有隐式动画的属性被修改后也可以做出动画效果,比如:cornerRadius。
具有隐式动画的属性在修改值的时候不需要做任何动画处理就会出现动画效果。
一些具有隐式动画的属性(更多属性请看官方文档或进入文件查看,都会有标注的):
- position
- backgroundColor
- bounds
如果修改这些属性不想执行隐式动画可以这样做
// 开启事务
CATransaction.begin()
// 设置是否执行动画
CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions)
customLayer.position = CGPointMake(50.0, 50.0)
customLayer.backgroundColor = UIColor.redColor().CGColor
// 提交事务
CATransaction.commit()
CATextLayer
let textLayer = CATextLayer()
textLayer.bounds = CGRectMake(0, 0, 300, 100)
textLayer.position = CGPointMake(10, 200)
textLayer.anchorPoint = CGPointMake(0.0, 0.0)
textLayer.backgroundColor = UIColor.yellowColor().CGColor
textLayer.string = "一些字符串,一些字符串,一些字符串,一些字符串,"
textLayer.cornerRadius = 10
textLayer.alignmentMode = kCAAlignmentCenter
textLayer.wrapped = false
textLayer.truncationMode = kCATruncationEnd
textLayer.contentsScale = UIScreen.mainScreen().scale
let font = UIFont(name: "Helvetica-Bold", size: 13)
let fontRef = CGFontCreateWithFontName(font!.fontName)
textLayer.font = fontRef!
textLayer.fontSize = font!.pointSize
textLayer.foregroundColor = UIColor.blackColor().CGColor
view.layer.addSublayer(textLayer) self.textLayer = textLayer
一些常用属性(更多参照官方文档):
- string:要显示的字符串,可以是富文本,有隐式动画。
- alignmentMode:排列模式(居中,靠左,靠右),有隐式动画。
- wrapped:包裹字符串(是否换行显示)。
- trancationMode:裁剪字符串模式,当超出范围时指定如何裁剪字符串。
- contentsScale:内容缩放,需要设置为屏幕的scale,否则可能会出现字体模糊现象。
- font:字体,有隐式动画。
- fontSize:字体大小,有隐式动画。
- foregroundColor:字体颜色,有隐式动画。
CALayer -- 备忘的更多相关文章
- Objective-C教程备忘单
终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello Worl ...
- GIS部分理论知识备忘随笔
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...
- python序列,字典备忘
初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...
- Vi命令备忘
备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...
- ExtJs4常用配置方法备忘
viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...
- [备忘] Automatically reset Windows Update components
这两天遇到Windows 10的更新问题,官方有一个小工具,可以用来修复Windows Update的问题,备忘如下 https://support.microsoft.com/en-us/kb/97 ...
- ECMAScript 5(ES5)中bind方法简介备忘
一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不 ...
- MFC通过txt查找文件并进行复制-备忘
MFC基于对话框的Demo txt中每行一个23位的卡号. 文件夹中包含以卡号命名的图像文件.(fpt或者bmp文件) 要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来. VC6.0写的. ...
- php 相关模块备忘
在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
随机推荐
- oracle并行模式(Parallel)
1. 用途 强行启用并行度来执行当前SQL.这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试.也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能.举例的话,就 ...
- QT 事件过滤器 eventFilter
在监测的代码里执行需要的行为. 这可以用event Filter来达到. 设置一个event filter有两个步骤: 1. 在目标对象上调用installEventFilter(),将监测对象注册到 ...
- HDU1241(bfs)JAVA
import java.util.Scanner;public class Main1241 { public static void main(String[] args) { Scanner ci ...
- android开发之ExpandableListView的使用,实现类似QQ好友列表
由于工作需要,今天简单研究了一下ExpandableListView,做了一个类似QQ列表的Demo,和大家分享一下. 效果图如下: 先来看看主布局文件: <RelativeLayout xml ...
- Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)
1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 ...
- mac 终端中添加tree命令显示文件目录结构
在Ubuntu下,通过 sudo apt-get install tree 可以使用tree命令,显示文件目录列表,如图所示: 在mac OS X系统下怎么使用呢? 在终端输入: cd $home ...
- Word转换为图片PDF
1. Word转换为PDF,程序很多,但转换后的PDF,还可以复制,虽可以加密禁止复制,但市场上太多的PDF,还可以把PDF转换Word等其他格式,很容易被别人利用和剽窃,即便是PDF加 ...
- struts----通配符设置
本次学习的内容是struts通配符配置: 具体内容为: 一.准备工作 1.新建Web工程 2.添加struts:右键点击工程名选择My Eclipse-->点击add struts..--> ...
- Linux学习新篇——常用命令和快捷键总结
最近刚接触Linux,整理了一些常用的命令和快捷键 Tab补全命令 当命令记不清了,输入记得的前几个用Tab就可以将该命令自动补全. 启动tomcat服务用$startup.sh 停止tomcat服务 ...
- C#的类型、变量和值
大学学了C#,工作也是使用C#,虽然在日常的开发中没什么大的问题,但个人觉得在C#的理解还不是很清晰,所以决定花一定的时间来理一理学过的知识,顺便革新下脑袋里的知识,因为坑爹的学校在教.net的时候, ...