zoukankan      html  css  js  c++  java
  • 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的约束,而不是边缘位置的约束。



    攻克了。

    睡觉了..

  • 相关阅读:
    excel查找定位操作(for lutai)
    sqlserver检查sql执行时间
    excel操作for(lutai)
    android studio 3.0+发布签名apk注意的情况
    二维码
    svn文件合并
    生成wsdl代理c#代码
    LOCK_TIMEOUT
    支持chrome30下载文件
    miniui处理多重子表级联,一次性提交多表数据的ui要点
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5239612.html
Copyright © 2011-2022 走看看