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的约束,而不是边缘位置的约束。



    攻克了。

    睡觉了..

  • 相关阅读:
    WPF游戏摘记地图编辑器(1)
    图片和视频操作核心代码
    WPF游戏摘记地图编辑器(2)
    序言
    Asp.Net 请求处理机制
    C#正则表达式
    ActiveX控件打包成Cab实现浏览器自动下载安装
    ios数据存储
    ARC 学习
    Ray's Learn Cocos2d 笔记(一)
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5239612.html
Copyright © 2011-2022 走看看