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

解决了。 睡觉了..

时间: 2025-01-01 20:43:29

iOS开发-CGAffineTransformMakeRotation改变了中心解决办法的相关文章

iOS开发百度地图常见问题及解决办法

1.64bit模拟器不能正常工作 解决:请将Xcode5 的 Project -> Edit Active Target -> Build Settings -> Linking -> Other Linker Flags 中的"-ObjC"修改为"-all_load" 2.程序死在 _mapView = [[BMKMapView alloc] init]; 解决:很可能是由于没有在appDelegate里面初始化_mapManager 3.

iOS开发:didSelectRowAtIndexPath:方法失效解决办法

问题描述及解决过程: 为了达到点击TableView空白区退出键盘的效果,给控制器注册了一个UITapGestureRecognizer来识别点击事件,代码如下: 1 #pragma mark - 设置手势识别器 2 3 - (void)setupGestureRecognizer 4 { 5 // 创建手势识别器对象 6 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init]; 7 // 设置手势识别器对象的代理为

编译天嵌官方的linux-2.6.30.4内核下载到TQ2440开发板不断重启的解决办法

编译天嵌官方的linux-2.6.30.4内核下载到TQ2440开发板不断重启的解决办法 查看了一下开发板启动打印的 LOG 信息,和官方启动 LOG 一对比发现交叉编译器版本不一致.我用的编译器版本是:arm-linux-gcc-4.5.1,而天嵌官方的 zImage.bin 是用arm-linux-gcc-4.3.3编译的.于是网上找了半天arm-linux-gcc-4.3.3没找到,便下载了一个 4.3.2 版本的. 重新编译下载,板子竟然奇迹般可以正常启动了. 但是又出现了新的问题,进入

Android开发遇到的异常及解决办法

Android开发遇到的错误及解决方法1. Unable to resolve target 'android-7' 解决方案: 修改工程目录下的default.properties文件里的内容target=android-7改成target=android-12(或者其他版本)就可以了,最好用txt打开,然后修改之后保存,运行就可以了. 原代码如下: # This file is automatically generated by Android Tools.# Do not modify

iOS开发遇到的坑之五--解决工程已存在plist表,数据却不能存入的问题

想写这篇博客其实在一两个月前开发遇见的时候就想把这个问题写成博客的,奈何自己一直懒外加一直没有时间,就把这个事情给耽搁了,好在当时知道下自己一定要把这个问题给描述出来,免得以后其他人遇到这个问题会纠结很久(其实就是我啦,基础知识不过关),所以当时就把这个过程给记录下来了 给这篇博客命名的时候,是不知道该怎么取名字的(语文不好),因为实在难以描述清楚,于是把它归为了 iOS开发遇到的坑系列文章(如果各位看官认为这确实是我基础的问题,请告诉欧文,我会修改过来的,顺便也学习学习) 大概就是下面这种情况

常见的移动端H5页面开发遇到的坑和解决办法

转自:https://www.cnblogs.com/LiuJL/p/7744473.html 1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,所以苹果当初就把iPhone 4的960640分辨率,在网页里只显示了480320,这样devicePixelRatio=2.现在android比较乱,有1.5的,有2的也有3的.

COCOS2D-X项目在XCODE没有IOS Simulator,无法仿真的解决办法

我把WIN7下用VS2012做好的项目移植到IOS,在OSX环境下用cocos new 生成一个项目,把原来的classess和Resources覆盖新生成的XCODE项目,,然后用XCODE打开项目添加好上述文件,如下图: 默认的scheme是libcocos2d IOS项目,有IOS SIMULATOR,但是 这个项目是无法启动仿真器的. 而我需要的是下图的SCHEME,但是不是默认的,而且没有IOS SIMULATOR供选用: 解决办法如下: 第一步: 第二步: 第三步: 第四步: 这样生

关于IOS二维码创建、扫描的使用方式(IOS,ZBar支持64位解决办法)

在IOS开发过程中,有时需要使用到二维码扫描及二维码生成,现在介绍我自己测试并通过的方法: (一) 二维码生成方式: 需要工具:libqrencode库,QRCodeGenerator.h,QRCodeGenerator.m文件,说实话,在网上找这两个文件确实废了我不少的功夫,下面我会把详细的下载地址贴上,相信定能节省大家不少的时间. 有了以上两个文件之后你就可以将它添加到你到工程中,使用相应的接口API便可以完成相应的功能. imageview.image = [QRCodeGenerator

android 开发中遇到错误及解决办法总结

新手总结的开发中所遇到错误及解决办法,如有不对,欢迎指正,如有更好的解决办法,也请不吝赐教. 一.dialog.show()引起的android.view.WindowManager$BadTokenException错误 错误日志 android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?