CALayer

以下内容主要来自:iOS核心动画高级编程

UIView是iOS系统中界面元素的基础,其本身更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALayer的相关属性。
注:你可以使用self.view.layer来获取root layer(它是CALayer类,不是subclass)

  1. zPosition属性
    配置遮挡属性,就是各个layer的显示次序。(比如layer1和layer2都在父视图layer上,layer1.zPostion = 1; layer2.zPostion = 0 layer1就会盖住layer2)
    CGFloat zPostion = self.view.layer.zPosition;
    self.view.layer.zPosition = 1;

  2. anchorPoint属性
    注:以自身Bounds尺寸来区分,(0.5,0.5)就是所属视图的中心点为支点。
    它主要的作用就是用来作为变换的支点(可以围绕这个支点旋转,类似钟表指针)。
    左上角、右下角,anchorPoint分为为(0,0), (1, 1),也就是说anchorPoint是在单元坐标空间(同时也是左手坐标系)中定义的,可以得出在白纸的中心点、左下角和右上角的anchorPoint为(0.5,0.5), (0,1), (1,0)。

  3. postion属性(anchorPoint默认是(0.5,0.5),所以position默认也是中心点)
    position点是相对suerLayer的,anchorPoint点是相对layer的,两者是相对不同的坐标空间的一个重合点。
    anchorPoint的默认值为(0.5,0.5),也就是anchorPoint默认在layer的中心点:
    position.x = frame.origin.x + anchorPoint.x * bounds.size.width;
    position.y = frame.origin.y + anchorPoint.y * bounds.size.height;

  4. masksToBounds属性
    位于layer之下的盖住,相当于裁剪,跟clipsToBounds一样,只是前者作用于layer,后者作用于UIView及其继承类。

  5. contents属性(类型为id)
    layer.contents = (__bridge id)image.CGImage

  6. contentsGravity属性(跟UIImageView的contentMode属性类似)
    适应视图:
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    layer.contentGravity = kCAGravityResizeAspect;
    常量:(这里常量是String,UIKit那边是枚举)
    • kCAGravityCenter
    • kCAGravityTop
    • kCAGravityBottom
    • kCAGravityLeft
    • kCAGravityRight
    • kCAGravityTopLeft
    • kCAGravityTopRight
    • kCAGravityBottomLeft
    • kCAGravityBottomRight
    • kCAGravityResize
    • kCAGravityResizeAspect
    • kCAGravityResizeAspectFill

  7. contentsScale属性
    注:CGImage没有拉伸概念,设置图层时候拉伸容易丢失像素,可以通过此属性修复
    寄宿图的像素尺寸和视图大小的比例,默认情况下为1。
    contentsScale设置为1.0,将会以每个点1个像素绘制图片,如果设置为2.0,则会以每个点2个像素绘制图片,这就是我们熟知的Retina屏幕
    self.layerView.layer.contentsScale = [UIScreen mainScreen].scale;
    通过设置contentsScale,以当前屏幕的方式渲染

  8. contentsRect属性
    默认的contentsRect是{0, 0, 1, 1}
    相关运用:拼合图片(提高内存使用,载入性能,渲染特性等等)
    用四个图片的layer设置contentRect,去掉不需要的部分

  9. contentsCenter属性
    contentsCenter其实是一个CGRect,它定义了一个固定的边框和一个在图层上可拉伸的区域

  10. CAShaperLayer和UIBezierPath搭配使用
    UIBezierPath 描绘路径
    CAShaperLayer 添加UIBezierPath的路径,addSublayer

  11. CAKeyframeAnimation 和 CABasicAnimation
    CAKeyframeAnimation:关键帧动画
    根据UIBezierPath逐帧执行
    CABasicAnimation:基本动画
    animationWithKeyPath的值(根据键值来执行动画方式)
    addAnimation:forkey: 这个方法随意起名字
    fromValue 开始值
    toValue 终了值(絶対値)
    byValue 终了值(相对值)

  12. mask属性(蒙版属性)
    此属性定义了父图层的可见区域,不仅局限于静态图!!!

  13. 组透明效果(shouldRasterize rasterizationScale属性)
    button2.layer.shouldRasterize = YES;
    button2.layer.rasterizationScale = [UIScreen mainScreen].scale;

  14. CAGradientLayer
    用来生成两种或多种颜色平滑渐变,真正好处是使用了硬件加速
    colors属性:设置渐变颜色(如果需要多种渐变颜色,只需在数组里面添加)
    gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor blueColor].CGColor];
    起点位置和终点位置
    gradientLayer.startPoint = CGPointMake(0, 0);
    gradientLayer.endPoint = CGPointMake(1, 1);
    locations属性:调整颜色空间,默认是均匀渲染
    gradientLayer.locations = @[@0.0, @0.25, @0.5];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,443评论 6 30
  • 原文出处:http://blog.csdn.net/zhz459880251/article/details/50...
    F麦子阅读 1,706评论 0 5
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,088评论 5 13
  • 一、CAShapelayer 我们知道可以不使用图片情况下利用CGpath去构建任意形状的阴影。其实我们也可...
    小猫仔阅读 1,405评论 0 5
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,135评论 0 13