美文网首页iOS 砖家纪实录UIVIewiOS动画
iOS中UIView 的旋转与缩放以及同时应用两种效果

iOS中UIView 的旋转与缩放以及同时应用两种效果

作者: 舒耀 | 来源:发表于2015-06-24 10:43 被阅读18476次
  1. UIView的缩放
    CGAffineTransform 提供了两个方法用于缩放,分别是CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)和CGAffineTransform CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy)。
    1.1 CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
    这个方法可以方便的对view的长和宽进行缩放,不改变view的中心点。注意!中心点不变指的是物理位置不变,不是坐标,因为坐标系此时已经发生改变。
    例如:对view进行0.5等比缩放:
    view.transform = CGAffineTransformMakeScale(0.5, 0.5);
    1.2 CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy)
    这个方法同样是view的长和宽进行缩放,效果类似CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)不同的是这个方法可以叠加其他CGAffineTransform效果(比如旋转)
    例如:对view进行0.5等比缩放:
    view.transform = CGAffineTransformScale(view.transform, 0.5, 0.5);
  2. UIView的旋转
    CGAffineTransform 提供了两个方法用于旋转,分别是CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)和CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)。
    2.1 CGAffineTransformMakeRotation(CGFloat angle)
    这个方法可以方便的对view进行旋转,不改变view的中心点。注意!中心点不变指的是物理位置不变,不是坐标,因为坐标系此时已经发生改变。
    例如:对view进行45度旋转:
    view.transform = CGAffineTransformMakeRotation (M_PI_2);
    2.2 CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)
    这个方法同样是对view进行旋转,效果类似 CGAffineTransformMakeRotation(CGFloat angle)不同的是这个方法可以叠加其他CGAffineTransform效果(比如缩放)
    例如:对view进行45度旋转:
    view.transform = CGAffineTransformRotate (view.transform, M_PI_2);
    我们考虑这样一种需求:对UIView同时进行缩放和旋转(以0.5倍等比缩放和45度旋转为例)。在我自己的实践中,最开始的想法很简单,CGAffineTransformMakeScale(0.5, 0.5)进行缩放,接着使用CGAffineTransformMakeRotation (M_PI_2)进行旋转,问题马上出来了,view并不会在缩放的同时进行旋转,而是只应用了最后的旋转效果。一番研究之后,找到了可行的解决方案,即:
    分别使用CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)和CGAffineTransform CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy)替换上面的两个方法,具体代码如下:
    view.transform = CGAffineTransformScale(view.transform, 0.5, 0.5);
    view.transform = CGAffineTransformRotate (view.transform, M_PI_2);

相关文章

  • iOS中UIView 的旋转与缩放以及同时应用两种效果

    UIView的缩放CGAffineTransform 提供了两个方法用于缩放,分别是CGAffineTransfo...

  • iOS中UIView 的旋转与缩放以及同时应用两种效果

    UIView的缩放 CGAffineTransform 提供了两个方法用于缩放,分别是CGAffineTransf...

  • Unity旋转和缩放02-控制摄像机

    Unity旋转和缩放01-控制模型自身 PC端:控制摄像机,围绕模型旋转实现旋转效果、与模型的距离实现缩放效果。功...

  • iOS 图片的同时旋转缩放

    最近项目中的一个小需求,要求图片同时进行旋转和缩放两种操作,做一个简单的总结,先看下效果图: 需求分析 图片有两种...

  • 事件处理

    iOS事件分类以及相关方法 在iOS中事件分为三类: 触摸事件:通过触摸、手势进行触发(例如手指点击、缩放、旋转)...

  • iOS事件处理

    iOS事件分类以及相关方法 在iOS中事件分为三类: 触摸事件:通过触摸、手势进行触发(例如手指点击、缩放、旋转)...

  • iOS 简单的头部缩放效果

    iOS 简单的头部缩放效果 iOS 简单的头部缩放效果

  • transform

    transform UIView的属性形变操作(缩放、旋转、平移) .transform 是CGAffineTra...

  • transform 要点

    1.transform是UIView的属性,主要用于平移,旋转和缩放。 2.平移,旋转和缩放是基于锚点。系统表现动...

  • CoreAnimation动画

    iOSApp基本的动画就是移动,旋转,缩放 这些,UIView的分类UIViewKeyframeAnimation...

网友评论

  • 高高叔叔:CGAffineTransformMakeScale 想知道这个放大后还可以变回原来的样子的吗
    高高叔叔:@舒耀 系统有个变量可以找到了
    舒耀:+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion
    可以使用UIView的这个方法在动画结束之后再缩放,暂时这样想的。
  • 高高叔叔:先点赞在学习看看。
  • 863c73f31933:楼上知道,用CGAffineTransformRotate这个属性能进行逆时针旋转不?
  • 高小波:感觉动画很怪异啊,幅度特别大
  • super_lian:谢谢作者,我想实现在cell的展示中实现旋转加缩放怎么实现呢,我试过在willDisPlay代理中用cell直接替代view,然后加动画,发现第一次可以,但是在cell滑动的时候就会缩小无法变回原大小

本文标题:iOS中UIView 的旋转与缩放以及同时应用两种效果

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