[分享]iOS开发-UIView顺时针旋转、逆时针旋转

本文详细介绍了如何使用UIView动画方法实现控件的逆时针旋转180度,并通过实例展示了顺时针旋转的实现过程。尽管顺时针旋转后控件似乎应该回归原位,但实际效果并非如此,原因在于旋转操作基于固定的目标角度而非当前角度。文章深入探讨了这一现象背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逆时针旋转:

    //arrowLeft 是要旋转的控件
    //逆时针 旋转180度 
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.2]; //动画时长
    arrowLeft.transform = CGAffineTransformMakeRotation(180 *M_PI / 180.0);
    CGAffineTransform transform = arrowLeft.transform;
    //第二个值表示横向放大的倍数,第三个值表示纵向缩小的程度
    transform = CGAffineTransformScale(transform, 1,1);
    arrowLeft.transform = transform;
    [UIView commitAnimations];
    

顺时针旋转:

    //顺时针 旋转180度
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.2]; //动画时长
    arrowLeft.transform = CGAffineTransformMakeRotation(0*M_PI/180);
    CGAffineTransform transform = arrowLeft.transform;
    transform = CGAffineTransformScale(transform, 1,1);
    arrowLeft.transform = transform;
    

正常想法,一个控件经历一次顺时针旋转180度之后(也就是执行一遍这个方法),再执行一遍,应该是回归原位。但是不知道为什么没有。可能是跟设置坐标类似吧,它旋转的时候不是以现在的角度为基准进行旋转,而是一定固定好要旋转到的角度。


分享来源:
http://my.oschina.net/irisoO/...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值