iOS 围绕某点转动(锚点)动画

开发中有这样的需求:

最终动画.gif

这是围绕右下角转动的动画

1.点击按钮围绕锚点转动:

- (void)buttondddd:(UIButton *)sender {
    sender.selected = !sender.selected;
    self.veiew.layer.anchorPoint = CGPointMake(1, 1);
    self.veiew.transform = CGAffineTransformMakeRotation(M_PI * 0.15 * sender.selected);
}

效果如下:

未计算锚点.gif

2.发现改变了锚点,frame也变了,在网上找了篇文章,(这里)找到了计算公式
更改代码

- (void)buttondddd:(UIButton *)sender {
     sender.selected = !sender.selected;
     CGPoint oldOrigin = self.veiew.frame.origin;
     self.veiew.layer.anchorPoint = CGPointMake(1, 1);
     CGPoint newOrigin = self.veiew.frame.origin;
    
    CGPoint transition;
    transition.x = newOrigin.x - oldOrigin.x;
    transition.y = newOrigin.y - oldOrigin.y;
    
    self.veiew.center = CGPointMake (self.veiew.center.x -         transition.x, self.veiew.center.y - transition.y);
    self.veiew.transform = CGAffineTransformMakeRotation(M_PI * 0.15 * sender.selected);
}

效果如下

中间动画.gif

发现动画很生硬

3.加个动画过程

- (void)buttondddd:(UIButton *)sender {
    sender.selected = !sender.selected;
    CGPoint oldOrigin = self.veiew.frame.origin;
    self.veiew.layer.anchorPoint = CGPointMake(1, 1);
    CGPoint newOrigin = self.veiew.frame.origin;
    
    CGPoint transition;
    transition.x = newOrigin.x - oldOrigin.x;
    transition.y = newOrigin.y - oldOrigin.y;
    
    self.veiew.center = CGPointMake (self.veiew.center.transition.x, slf.veiew.center.y - transition.y);
    
    [UIView animateWithDuration:.3 animations:^{
        self.veiew.transform = CGAffineTransformMakeRotation(M_PI * 0.15 * sender.selected);
    }];
}

最终效果

最终动画.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你...
    Yiart阅读 3,895评论 3 34
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,586评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,152评论 5 13
  • 叠加的两个习惯早起、练习书法都较满意,还是害怕面对新挑战,能接受当下的自己。 爱预设困难,经常有纠结,记录、复盘未...
    范秀云阅读 125评论 0 0
  • 01 你有没有想过,爱情中什么最可怕? 这个问题的答案,恐怕如同一千个读者心中有一千个哈姆雷特一样,一定是五花八门...
    幸福熊兔咖啡铺阅读 639评论 2 13