首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏進无尽的文章

    动画| 3D空间变幻之CATransform3D的使用

    随便说一句锚点的位置很重要,经常会左右动画的效果 CATransform3D有着与CGAffineTrans类似的一组API,但他们有个重要的区别在于CATransform3D的效果只能加在layer的 (CATransform3D a, CATransform3D b); //将两个 transform3D对象变换属性进行叠加,返回一个新的transform3D对象 CATransform3D CATransform3DConcat (CATransform3D a, CATransform3D b); 1、平移变换 //返回一个平移变换的transform3D对象 tx,ty,tz对应x,y,z轴的平移 CATransform3D 变换的基础上进行缩放变换,其他参数同上 CATransform3D CATransform3DScale (CATransform3D t, CGFloat sx, CGFloat sy, CGFloat (image-590485-1522314280452)] 4、旋转翻转变换 //将一个旋转的效果进行翻转 CATransform3D CATransform3DInvert (CATransform3D

    2.1K10发布于 2018-09-12
  • 来自专栏一“技”之长

    iOS开发CoreAnimation解读之六——CATransform3D变换的应用

    iOS开发CoreAnimation解读之五——CATransform3D变换的应用 一、引言         CATransform3D定义了一个变化矩阵,通过对矩阵参数的设置,我们可以改变layer 首先,CATransform3D定义了一个4*4的矩阵,如下: struct CATransform3D {   CGFloat m11, m12, m13, m14;   CGFloat m21, m22  (CATransform3D a, CATransform3D b); //将两个 transform3D对象变换属性进行叠加,返回一个新的transform3D对象 CATransform3D CATransform3DConcat  (CATransform3D a, CATransform3D b); 1、平移变换 //返回一个平移变换的transform3D对象 tx,ty,tz对应x,y,z轴的平移 CATransform3D  sz); //在一个transform3D变换的基础上进行缩放变换,其他参数同上 CATransform3D CATransform3DScale (CATransform3D t, CGFloat 

    1.9K20发布于 2018-08-15
  • 来自专栏APP自动化测试

    CATransform3D实现3D效果和制作简单3D动画

    我们先来看下CATransform3D的头文件 struct CATransform3D { CGFloat m11, m12, m13, m14; CGFloat m21, m22, m23, m24; CGFloat m31, m32, m33, m34; CGFloat m41, m42, m43, m44; }; typedef struct CATransform3D CATransform3D ; 可以看到CATransform3D是一个4 * 4结构体, 另外它还有一个弟弟CGAffineTransform是 3 * 3结构体 他们的区别看名字就很明显, CATransform3D是做3D坐标变换 我们继续看下CATransform3D头文件中的其他内容 CA_EXTERN const CATransform3D CATransform3DIdentity; //一个无任何变换的默认矩阵常量,可用于使变换后的 (CATransform3D a, CATransform3D b); //判断两个矩阵是否相同 CA_EXTERN CATransform3D CATransform3DMakeTranslation

    91040发布于 2019-10-15
  • 来自专栏老司机的简书

    老司机带你走进Core Animation 之图层的透视、渐变及复制

    ---- CATransform3D 先介绍一下CATransform3D吧。 CATransform3D 正如上图所示,我们可以清晰的看到,CATransform3D是一个结构体。 不同点在于,CATransform3D作用与3维坐标系的坐标变换,CGAffineTransform作用于2维坐标系的坐标变换。 所以CGAffineTransform用于对UIView进行变换,而CATransform3D用于对CALayer进行变换。 =) 一脸无辜 所以呢,老司机直接来介绍CATransform3D的相关api吧。(CGAffineTransform的api与CATransform3D相似,可类比使用)。 其实呢,关于CATransform3D你只要会使用以上api对图层做3维坐标转换就够了。

    1K40发布于 2018-08-22
  • 来自专栏大宇笔记

    Core Animation实战五(变换)

    @implementation ThreeDTransViewController - (void)viewDidLoad { [super viewDidLoad]; //初始化CATransform3D CATransform3D transForm = CATransform3DIdentity; //m34决定远近缩放 transForm.m34 = - 1.0 / 500.0 CATransform3D perspective = CATransform3DIdentity; //灭点 物体远近缩放比例 perspective.m34 = -1.0 ) //译者注:GLKMatrix4和CATransform3D内存结构一致,但坐标类型有长度区别,所以理论上应该做一次float到CGFloat的转换,感谢[@zihuyishi](https ://github.com/zihuyishi)同学~ CATransform3D transform = face.transform; GLKMatrix4 matrix4 = *(

    57930发布于 2019-01-15
  • 来自专栏APP自动化测试

    使用CATransformLayer制作3D图像和动画

    之前我们讲过可以用CALayer搭配CATransform3D来实现将View做3D旋转, 今天我们再看一个3D的新东西 CATransformLayer, 看名字就知道这个layer跟旋转有关, 那么具体是什么呢 create cube layer CATransformLayer *cube = [CATransformLayer layer]; //add cube face 1 CATransform3D CATransform3DMakeRotation(30, 1, 1, 0); [self.view.layer addSublayer:cube]; } - (CALayer *)faceWithTransform:(CATransform3D :1.0].CGColor; face.transform = transform; return face; } @end 我们可以再给容器一个旋转动画, 就实现了一个旋转的立方体 CATransform3D

    1.1K51发布于 2019-10-15
  • 来自专栏陈满iOS

    iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)

    类型属性:animaView.layer.transform 通过 .layer.transform 可以在3D模式下面的变化,通常使用的都是前缀为CATransform3D的类。 2.3.2 CALayer与动画相关的属性--与CATransform3D对应 下面是CALayer的一些属性介绍 //宽度和高度 @property CGRect bounds; //位置(默认指中点 与CGAffineTransform相互转换API //将一个CGAffinrTransform转化为CATransform3D CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform m); //判断一个CATransform3D是否可以转换为CAAffineTransformbool CATransform3DIsAffine (CATransform3D t); //将CATransform3D转换为CGAffineTransform CGAffineTransform CATransform3DGetAffineTransform (CATransform3D

    4K21发布于 2018-09-10
  • 来自专栏雨尘分享

    AVFoundation 实现人脸识别

    头部向肩膀方向的侧斜角度 if (face.hasRollAngle) { //如果为YES,则获取相应的CATransform3DCATransform3D t = [self transformForRollAngle:face.rollAngle]; //将它与标识变化关联在一起,并设置transform //判断人脸对象是否具有有效的偏转角 人脸绕y轴旋转的角度 if (face.hasYawAngle) { //如果为YES,则获取相应的CATransform3DCATransform3D t = [self transformForYawAngle:face.yawAngle]; layer.transform

    4.7K20发布于 2021-03-02
  • 来自专栏大壮

    iOS transform(基础)

    struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty; }; CALayer中的transform为CATransform3D 类型,而CALayer对应于UIView的transform属性叫做affineTransform struct CATransform3D { CGFloat m11, m12, m13, m14

    1.7K60发布于 2018-06-19
  • 来自专栏非典型技术宅

    iOS动画系列之一:带时分秒指针的时钟动画(上)1. 最终实现的效果以及思维导图2. CALayer3. 隐式动画

    CGPoint |position;| 默认情况下相当于UIView的center @property CGPoint |anchorPoint;| position的锚点 @property CATransform3D 为了做一些修正,我们需要引入投影变换(又称作z变换)来对除了旋转之外的变换矩阵做一些修改,Core Animation并没有给我们提供设置透视变换的函数,因此我们需要手动修改矩阵值,幸运的是,很简单:CATransform3D “ios核心动画高级技巧.” iBooks. struct CATransform3D{ CGFloat m11(x缩放), m12(y切变), m13(旋转), m14() m44; }; struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty; }; // 定义矩阵 CATransform3D

    2.5K30发布于 2018-06-28
  • 来自专栏哈雷彗星撞地球

    iOS动画(补充)--特殊Layer动画

    width, width); replicatorLayer.instanceDelay = 0.1; replicatorLayer.instanceCount = 3; CATransform3D 0.3; replicatorLayerX.instanceCount = cols; [replicatorLayerX addSublayer:dotLayer]; CATransform3D replicatorLayerY.instanceCount = 3; [replicatorLayerY addSublayer:replicatorLayerX]; CATransform3D

    1.2K32发布于 2018-08-22
  • 来自专栏大壮

    iOS transform(2D仿射)

    我写的DEMO:点这跳转,记得点Star 关于翻转和一些3D变化就需要 CATransform3D,下一章再讲解。

    74450发布于 2018-06-19
  • 来自专栏Alan's Lab

    [swift]读取svg图片为UIBezierPath,开心做动画

    transform") transAnim.duration = drand48() * 4 // 随机一个持续时间 transAnim.fromValue = NSValue(CATransform3D : startTransform) transAnim.toValue = NSValue(CATransform3D: CATransform3DIdentity) rectLayer.addAnimation

    1.9K20发布于 2018-10-19
  • 来自专栏python3

    疯狂ios讲义之使用CoreLocati

    属性的属性动画 CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath:@"transform"]; CATransform3D 设置动画开始的属性值 anim.fromValue = [NSValue valueWithCATransform3D: fromValue]; // 绕Z轴旋转heading弧度的变换矩阵 CATransform3D

    1.2K00发布于 2020-01-08
  • 来自专栏云原生布道专栏

    【IOS开发进阶系列】动画专题

    在第五章,我们将会涉及CATransform3D,你会知道如何在三维空间移动和旋转图层,除了做变换之外,zPosition最实用的功能就是改变图层的显示顺序了。         CALayer同样也有一个transform属性,但它的类型是CATransform3D,而不是CGAffineTransform,本章后续将会详细解释。 和CGAffineTransform类似,CATransform3D也是一个矩阵,但是和2x3的矩阵不同,CATransform3D是一个可以在3维空间内做变换的4x4的矩阵(图5.6)。 图5.6 对一个3D像素点做CATransform3D矩阵变换         和CGAffineTransform矩阵类似,Core Animation提供了一系列的方法用来创建和组合CATransform3D instanceTransform指定了一个CATransform3D变换(这种情况下,下一图层的位移和旋转将会移动到圆圈的下一个点)。        

    1.4K10编辑于 2023-10-16
  • 来自专栏哈雷彗星撞地球

    iOS动画三板斧(二)--CoreAnimation动画介绍使用附加

    keyAnimation.duration = 1.0f; keyAnimation.beginTime = CACurrentMediaTime() + 1.0; CATransform3D transform1 = CATransform3DMakeScale(1.5, 1.5, 0); CATransform3D transform2 = CATransform3DMakeScale (0.8, 0.8, 0); CATransform3D transform3 = CATransform3DMakeScale(3, 3, 0); keyAnimation.values

    1.5K40发布于 2018-08-22
  • 来自专栏iOS面试技术问题

    iOS开发~UIView layer 之前的关系

    CATransform3D 函数族是苹果的Cover Flow 技术 以及 iPhone 上使用的其他美观特效的幕后力量。iPhone 支持包括缩放、旋转、仿射、平移等。 Quartz Core 框架用 CATransform3D 对象来执行变换。这个对象作用于视图的图层,根据期望的三维设置对图层进行弯折或者其他操作。 下面的例子创建了一个变换,目的是对一个图层进行旋转: CATransform3D myTransform; myTransform = CATransform3DMakeRotation(angle

    1.6K40发布于 2020-09-18
  • 来自专栏一“技”之长

    iOS流布局UICollectionView系列六——将布局从平面应用到空间

    很丑对吧,之后我们来设置每个item的3D效果,在上面的布局方法中添加如下代码:     //创建一个transform3D类     //CATransform3D是一个类似矩阵的结构体     // CATransform3DIdentity创建空得矩阵     CATransform3D trans3D = CATransform3DIdentity;     //这个值设置的是透视度,影响视觉离投影平面的距离     //计算每个item应该旋转的角度     CGFloat angle = (float)(indexPath.row)/itemCounts*M_PI*2;     //这个方法返回一个新的CATransform3D

    2K20发布于 2018-08-15
  • 来自专栏APP自动化测试

    再谈CAAnimation动画

    property CGFloat zPosition; @property CGPoint anchorPoint; @property CGFloat anchorPointZ; @property CATransform3D property(getter=isHidden) BOOL hidden; @property(getter=isDoubleSided) BOOL doubleSided; @property CATransform3D

    1.2K30发布于 2019-10-15
  • 来自专栏APP自动化测试

    CAReplicatorLayer复制Layer和动画, 实现神奇的效果

    bool值,默认为No,如果设为Yes,将会具有3维透视效果 @property CFTimeInterval instanceDelay; //复制后的layer相比原来的距离 @property CATransform3D

    1.1K20发布于 2019-10-15
领券