• iOS开发-CGAffineTransformMakeRotation改变了中心解决的方法


    坑爹的。  为了这个问题折腾了2个小时。 恼..


    今天在写一个时钟demo的时候, 时针的旋转用到了CGAffineTransformMakeRotation, 按理说. 图像的旋转是以图像本身的中心(center)为锚点的, 也就是在旋转过程中, 它的中心是固定的。

    就和我们时针的效果一样。

    比方我以下的时针, 分针, 秒针旋转的代码:

        NSDate *today = [NSDate date];
        NSCalendar *calendar = [NSCalendar currentCalendar];
        unsigned flags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
        NSDateComponents *todayComponents = [calendar components:flags
                                                        fromDate:today];
        
        int hour = [todayComponents hour];
        int min = [todayComponents minute];
        int sec = [todayComponents second];
        
        float fineHour = (hour % 12) + min /60.0;
        
        hourHand.transform = CGAffineTransformMakeRotation(M_PI * 2 * fineHour / 12.0);
        minuteHand.transform = CGAffineTransformMakeRotation(M_PI * 2 * min / 60.0);
        secondHand.transform = CGAffineTransformMakeRotation(M_PI * 2 * sec / 60.0);

    代码是没问题的。

    可是, 执行起来的时候, 发现旋转过程中中心变了。 出现了明显的位移...

    折腾了半天。 原来是自己主动布局搞的鬼.. 蛋疼。

    解决的办法:

    1. 关掉自己主动布局。

    2.你应当设置center的约束,而不是边缘位置的约束。



    攻克了。

    睡觉了..

  • 相关阅读:
    IO模型
    协程
    线程
    进程总结
    HashMap和Hashtable有什么区别
    HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的
    GC线程是否为守护线程?
    float f=3.4;是否正确?
    final、finally和finalized的区别?
    Eureka注册中心是什么?
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5239612.html
Copyright © 2020-2023  润新知