首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏慎独

    如何理解CGAffineTransform

    CGAffineTransform A structure for holding an affine transformation matrix. 包含如下参数: struct CGAffineTransform { CGFloat a; CGFloat b; CGFloat c; CGFloat d; CGFloat tx; CGFloat ty ; }; typedef struct CGAffineTransform CGAffineTransform; 下面直观的描述这个这个矩阵和坐标之间的关系。 originTransform = CGAffineTransformIdentity; 坐标变换之后出现的问题 意识到CGAffineTransform所做的变换其实是对坐标系做的变换。 -(void)editImageWithRotation:(UIRotationGestureRecognizer*)sender { CGAffineTransform transfrom

    1.4K20发布于 2018-06-01
  • 来自专栏進无尽的文章

    动画| 魔性形变之CGAffineTransform的使用

    CGAffineTransform UIView的transform属性是一个CGAffineTransform类型,用于在二维空间做旋转,缩放和平移。 CGAffineTransform是一个可以和二维空间向量(例如CGPoint)做乘法的3X2的矩阵。称为仿射变换,“仿射”的意思是无论变换矩阵用什么值,图层中平行的两条线在变换之后任然保持平行”。 官方定义: struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty; }; 虽然结构体中只有a,b,c,d,tx,ty /* 合并两个transform :t' = t1 * t2 */ CG_EXTERN CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2) CG_AVAILABLE_STARTING

    2.3K20发布于 2018-09-12
  • 来自专栏韦弦的偶尔分享

    SwiftUI:使用 CGAffineTransform 和奇偶填充来变换形状

    第一个是CGAffineTransform,它描述了如何旋转,缩放或剪切路径或视图。第二个是奇偶填充(even-odd fills),它使我们可以控制应如何渲染重叠的形状。 这背后的数学方法相对简单,只有一个需要注意点:CGAffineTransform以弧度而非角度来度量角度。 0, to: CGFloat.pi * 2, by: CGFloat.pi / 8) { // 根据循环旋转当前的花瓣 let rotation = CGAffineTransform rotationAngle: number) // 将花瓣移到我们视野的中心 let position = rotation.concatenating(CGAffineTransform 译自Transforming shapes using CGAffineTransform and even-odd fills

    1.9K30发布于 2020-05-08
  • 来自专栏一“技”之长

    iOS开发CoreGraphics核心图形框架之四——变换函数

    二、使用CGAffineTransform相关函数进行绘制图形的几何变换     CGAffineTransform中定义的方法即意义列举如下: //创建标准的变换矩阵 CGAffineTransform (CGAffineTransform t, CGFloat tx, CGFloat ty); //对某个变换矩阵进行缩放变换 CGAffineTransform CGAffineTransformScale (CGAffineTransform t, CGFloat angle); //对某个变换矩阵进行翻转变换 CGAffineTransform CGAffineTransformInvert(CGAffineTransform t); //对两个变换矩阵进行计算 CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2); //比较两个变换矩阵是否相同 bool CGAffineTransformEqualToTransform(CGAffineTransform t1, CGAffineTransform t2

    75110发布于 2018-08-15
  • 来自专栏一“技”之长

    iOS开发CoreGraphics核心图形框架之一——CGPath的应用

    CGPathRef时会将得路径进行transform变换后返回 CGPathRef CGPathCreateCopyByTransformingPath(CGPathRef path, const CGAffineTransform /这个方法将创建矩形路径 第一个参数为要绘制的矩形区域 第2个参数为要进行的transform变换 CGPathRef CGPathCreateWithRect(CGRect rect,const CGAffineTransform * transform); //这个方法将创建椭圆形路径 CGPathRef CGPathCreateWithEllipseInRect(CGRect rect, const CGAffineTransform 三、CGPath的路径绘制相关方法 //将路径移动到一个点作为起点 void CGPathMoveToPoint(CGMutablePathRef path,const CGAffineTransform * m, CGRect rect); //向路径中追加一组矩形 void CGPathAddRects(CGMutablePathRef path, const CGAffineTransform *

    2.1K31发布于 2018-08-15
  • 来自专栏韦弦的偶尔分享

    Swift 视图抖动扩展二

    = nil) { //设置一下重复动画平移的两个变换 var firstTransform: CGAffineTransform? = nil var lastTransform: CGAffineTransform? (translationX: offset, y: 0) lastTransform = CGAffineTransform(translationX: -offset, y: 0) case .vertical: firstTransform = CGAffineTransform(translationX: 0, y: offset) lastTransform = CGAffineTransform(translationX: 0, y: -offset) }

    1.1K10发布于 2018-09-11
  • 来自专栏c#开发者

    IOS5开发-控件位置适应屏幕旋转代码

    UIView setAnimationDuration: 0.25]; //-this will keep it in the same position - always standing up //CGAffineTransform M_PI / 0.5); //this will keep it standing up as in portrait however it will turn it upsidedown //CGAffineTransform //this will change the view to be upside-down but in proper alignment with the landscape mode //CGAffineTransform / 2.0); //this will change the view to be rightside-up in proper alignment with landscape mode CGAffineTransform move = CGAffineTransformMakeTranslation(0.0f, 0.0f); imageView.transform = move; CGAffineTransform

    1.7K110发布于 2018-04-12
  • 来自专栏MelonTeam专栏

    IOS控件动画的一种通用方法

    CGAffineTransform transform的类型是CGAffineTransform , 这是一个2D矩阵. 矩阵的基本知识 struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty; }; CGAffineTransform CGAffineTransformMake CGAffineTransform CGAffineMakeTranslation(CGFloat tx,CGFloat ty) 第二种: 设b=c=tx=ty=0. [aX + cY + tx bX + dY + ty 1] = [aX dY 1]; 可见,这个时候,坐标X按照a进行缩放,Y按照d进行缩放,a,d就是X,Y的比例系数,其实这也就是函数 CGAffineTransform 其实这也就是函数 CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle) 的计算原理。angle即ɵ的弧度表示。

    1.5K50发布于 2018-01-04
  • 来自专栏青玉伏案

    iOS开发之仿射变换示例总结

    所以本篇博客就先将fang放射变换(CGAffineTransform)的东西拎出来单独的过一下,这样在下篇博客中就可以减少对仿射变换的介绍了。 之前的博客主要讲述了CATransition,而本篇博客主要聊的内容是CGAffineTransform。 一、平移 接下来我们来看一下CGAffineTransform的平移,在使用CGAffineTransform进行平移的时候,我们要注意坐标系的转换。 使用CGAffineTransform进行View的缩放也是比较简单的,下方就是对ImageView进行缩放的运行效果。在缩放的过程中分为x方向上的缩放和y方向的缩放。 三、旋转 接下来就来聊聊CGAffineTransform的旋转,直奔主题,下方就是旋转的运行结果。

    1.5K80发布于 2018-01-11
  • 来自专栏韦弦的偶尔分享

    Swift 视图抖动扩展一

    那就写个就是了 基本思路就是让视图左右移动或者上下移动 调用视图的仿射变换函数就可以了吧 view.layer.setAffineTransform( CGAffineTransform(translationX switch direction { case .horizontal: self.layer.setAffineTransform(CGAffineTransform translationX: offset, y: 0)) case .vertical: self.layer.setAffineTransform(CGAffineTransform UIView.animate(withDuration: interval, animations: { self.layer.setAffineTransform(CGAffineTransform.identity

    1.3K10发布于 2018-09-11
  • 来自专栏大宇笔记

    Core Animation实战五(变换)

    * Translate `t' by `(tx, ty)' and return the result:      t' = [ 1 0 0 1 tx ty ] * t */ CG_EXTERN CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t,   CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(__MAC ; /* Scale `t' by `(sx, sy)' and return the result:      t' = [ sx 0 0 sy 0 0 ] * t */ CG_EXTERN CGAffineTransform CGAffineTransformScale(CGAffineTransform t,   CGFloat sx, CGFloat sy) CG_AVAILABLE_STARTING(__MAC_10 CGAffineTransformRotate(CGAffineTransform t,   CGFloat angle) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE

    58630发布于 2019-01-15
  • 来自专栏陈满iOS

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

    类型属性:animatedView.transform 一般是View的旋转,拉伸移动等属性,是二维的,通常使用都是前缀CGAffineTransform的类。 CGAffineTransform transform = CGAffineTransformScale(imageContainView.transform, 1.2, 1.2); [UIView 与CATransform3D 2.4.1 CGAffineTransform操作API CGAffineTransform结构体定义 struct CGAffineTransform { CGFloat CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t); 2.5 “组合动画” 与 CGAffineTransformConcat 另一种组合变换 基于已有的CGAffineTransform连续追加新的CGAffineTransformCGAffineTransform transform = CGAffineTransformIdentity

    4K21发布于 2018-09-10
  • 来自专栏進无尽的文章

    浅汇-iOS 动画

    有两个数据类型用来表示transform,分别是CGAffineTransform和CATransform3D。前者作用于UIView,后者为layer层次的变换类型。 对于想要了解矩阵变换是如何作用实现的,可以参考这篇博客:CGAffineTransform 放射变换 在开始使用transform实现你的动画之前,我先介绍几个常用的函数: /// 用来连接两个变换效果并返回 返回的t = t1 * t2 CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2) /// 矩阵初始值。 self.transform, sx, sy) CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) CGAffineTransformScale(CGAffineTransform self.transform, tx, ty) CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty) CGAffineTransformTranslate(CGAffineTransform

    1.3K30发布于 2018-09-12
  • 来自专栏進无尽的文章

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

    CGAffineTransform(仿射变换)是作用于UIViews的2D操作,而CATransform3D是作用于CALayers的更复杂的3D操作,这两种变换可以转换。 经常会左右动画的效果 CATransform3D有着与CGAffineTrans类似的一组API,但他们有个重要的区别在于CATransform3D的效果只能加在layer的transform属性上,而CGAffineTransform 的转换 CGAffineTransform是UIKit框架中一个用于变换的矩阵,其作用与CATransform类似,只是其可以直接作用于View,而不用作用于layer,这两个矩阵也可以进行转换,方法如下 : //将一个CGAffinrTransform转化为CATransform3D CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t); 处理 3D 影像、制做互动立体旋转的效果 ?

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

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

    5、CATransform3D与CGAffineTransform的转换         CGAffineTransform是UIKit框架中一个用于变换的矩阵,其作用与CATransform类似,只是其可以直接作用于 这两个矩阵也可以进行转换,方法如下: //将一个CGAffinrTransform转化为CATransform3D CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform CATransform3D是否可以转换为CAAffineTransform bool CATransform3DIsAffine (CATransform3D t); //将CATransform3D转换为CGAffineTransform CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t); 专注技术,热爱生活,交流技术,也做朋友。

    1.9K20发布于 2018-08-15
  • 来自专栏一“技”之长

    iOS文本布局探讨之二——关于TextKit框架中的字体描述

    UIFontDescriptor对象,并且设置变换参数 + (UIFontDescriptor *)fontDescriptorWithName:(NSString *)fontName matrix:(CGAffineTransform )matrix; CGAffineTransform是一个结构体,其用于文本的控件变换十分强大,在CoreAnimation框架中有CATransform3D这个结构体,CGAffineTransform 示例如下: //进行旋转 CGAffineTransform transfom = CGAffineTransformRotate(CGAffineTransformIdentity, instancetype)initWithFontAttributes:(NSDictionary<NSString *, id> *)attributes; 字典中可以配置的键值如下: //需要配置为NSValue值 CGAffineTransform

    1.7K30发布于 2018-08-15
  • 来自专栏sktj

    IOS 给相机添加滤镜效果

    orientation 69 if orientation == UIDeviceOrientation.portraitUpsideDown { 70 ciImage = ciImage.applying(CGAffineTransform ))) 71 } 72 else if orientation == UIDeviceOrientation.portrait { 73 ciImage = ciImage.applying(CGAffineTransform 75 else if (orientation == UIDeviceOrientation.landscapeRight) { 76 ciImage = ciImage.applying(CGAffineTransform

    1.3K10发布于 2019-07-10
  • 来自专栏零域Blog

    iOS手势与变形

    说变形前我们来看看CGAffineTransformCGAffineTransform为一个结构体: struct CGAffineTransform { CGFloat a, b, c, d 想进一步了解可以看这篇《iOS CGAffineTransform详解》 对iOS控件进行变形实际就是对控件transform属性进行操作。 CGAffineTransformMakeScale() CGAffineTransformMakeTranslate() CGAffineTransformMakeRotate() 这些API都是对设置CGAffineTransform imageView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // CGAffineTransform

    1.7K30编辑于 2022-03-22
  • 来自专栏大壮

    iOS transform(2D仿射)

    再来看看方法: 向右移动300的仿射效果 CGAffineTransform translate = CGAffineTransformMakeTranslation(300, 0) 使用仿射基础方法 CGAffineTransform translate = CGAffineTransformMake(1,0,0,1,300,0) //CGAffineTransformMake(CGFloat a,

    74650发布于 2018-06-19
  • 来自专栏Swift社区

    高级 SwiftUI 动画 — Part 2:GeometryEffect

    public func effectValue(size: CGSize) -> ProjectionTransform { return ProjectionTransform(CGAffineTransform 只需要知道:CGAffineTransform c 参数驱动倾斜,而 tx 则驱动 x 偏移。 func effectValue(size: CGSize) -> ProjectionTransform { return ProjectionTransform(CGAffineTransform -1 : 1) } return ProjectionTransform(CGAffineTransform(a: 1, b: 0, c: skew, d: 1, tx 0.01) let angle = calculateDirection(pt1, pt2) let transform = CGAffineTransform

    1.7K30编辑于 2022-04-04
领券