美文网首页iOS DeveloperiOS开发笔记
CALayer 基础注意点(一)

CALayer 基础注意点(一)

作者: 李周 | 来源:发表于2017-02-08 17:39 被阅读54次

  之前开发的时候了解过一些,现在决定从头整理,并将学习CALayer中发现的一些之前没注意的小细节记录下来:

1 positon 属性


  该属性设置的不是layer的中心点,而是锚点的位置anchorPoint:锚点范围为:(0,1),默认跟layer的中心点重合,为(0.5,0.5)。

 因为frame属性并不具备动画效果,所以在开发的过程中,主要使用bounds和position的结合。

2  图形绘制的时候 上下颠倒的问题


如果只是绘制一张图片,直接设置contents属性:

通过contents属性绘制图片

该方法是不需要考虑坐标问题的。

但是如果复杂的情况下使用

-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx

方法的话,就需要考虑图形绘制的上下颠倒问题,解决的方法有两种:

1)

解决图形上下颠倒问题的方法

2)绕x轴旋转180°:

解决图形上下颠倒问题的方法

3)相对于直接的代码表示,还可以通过keyPath设置旋转,如:

设置keyPath方法设置上下颠倒问题的方法

这样写最主要的是搞明白keyPath有哪些:

keyPath的值

想要讨论的是第二种方法,绕轴旋转到底是如何绕的?该如何理解?

首先,原图如下:

原图

如果是绕y轴的话,你想象坐标原点在中心点的下方,图形的最下方是x轴,y轴经过中心点,这样的话就很容易理解绕轴旋转的原理了:

绕y轴旋转效果图

同理,如果是绕x轴旋转的话,就是y轴在最左边,x轴经过中心点。

最后,我再解释一下旋转角度:

M_PI:3.141593

M_PI_2:1.570796

所以在转换度数的时候应该是:例 45°:45 /180*M_PI

3 使用自定义图层绘图


自定义图形指的就是继承于CALayer的子类,通过调用类中的-(void)drawInContext:(CGContextRef)ctx方法来绘图。为了显示再定义一个UIView的子类,UIView在创建的时候会自动的指定自身为CALayer的代理,所以在UIView中需要调用setNeedsDisplay方法。UIView会自动创建位图上下文,通过视图中的-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx方法将CGContextRef传递给CALayer方法中。而在UIView的draw:inContext:方法中会调用其drawRect:方法,在drawRect:方法中使用UIGraphicsGetCurrentContext()方法得到的上下文正是前面创建的上下文。

CALayer子类.m文件内容 UIView子类.m文件内容

相关文章

  • CALayer 基础注意点(一)

    之前开发的时候了解过一些,现在决定从头整理,并将学习CALayer中发现的一些之前没注意的小细节记录下来: 1 ...

  • CALayer与UIView的区别

    CALayer与UIView的区别 基础 CALayer的定义 CALayer的基础 CALayer和UIView...

  • CALyer介绍

    CALayer1-简介CALayer2-创建新的层CALayer3-层的属性CALayer4-自定义层 注意点 第...

  • CALayer(二)

    这篇在介绍CALayer的使用基础上,会介绍CALayer的一些需要注意的属性设置。github工程地址本篇内容主...

  • 一、CALayer基础

    iOS坐标系详解CALayer基础 By M了个J 在iOS系统中构建用户图形界面的内容一般都是UIView,比如...

  • Core Animation核心动画

    CALayer层(显示的基础)UIView核心显示功能就是依靠CALayer实现的如何获取一个CALayer对象1...

  • CALayer基础

    转载:http://www.jianshu.com/p/18c306333080 1.UIView与CALayer...

  • CALayer基础

    今天单纯说一下CALayer里面有的属性和方法。反正宗旨就是随意。打开CALayer定义文件: (id)prese...

  • CALayer动画需要注意的事项

    UIView.animate方法内执行CALayer动画 需要注意: self.layer如果是CALayer类型...

  • iOS-CALayer (二)

    上一篇 : iOS-CALayer (一) 前言:上一篇主要记录有关 CALayer 的基础相关知识,本章主要描述...

网友评论

    本文标题:CALayer 基础注意点(一)

    本文链接:https://www.haomeiwen.com/subject/vccbittx.html