码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发-CGAffineTransformMakeRotation改变了中心解决办法

时间:2014-09-01 12:24:43      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:blog   http   os   io   strong   ar   for   art   div   

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

比如我下面的时针, 分针, 秒针旋转的代码:

  1. NSDate *today = [NSDate date];  
  2. NSCalendar *calendar = [NSCalendar currentCalendar];  
  3. unsigned flags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;  
  4. NSDateComponents *todayComponents = [calendar components:flags  
  5.                                                 fromDate:today];  
  6.   
  7. int hour = [todayComponents hour];  
  8. int min = [todayComponents minute];  
  9. int sec = [todayComponents second];  
  10.   
  11. float fineHour = (hour % 12) + min /60.0;  
  12.   
  13. hourHand.transform = CGAffineTransformMakeRotation(M_PI * 22 * fineHour / 12.0);  
  14. minuteHand.transform = CGAffineTransformMakeRotation(M_PI * 22 * min / 60.0);  
  15. secondHand.transform = CGAffineTransformMakeRotation(M_PI * 22 * sec / 60.0);  

 

代码是没问题的。

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

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

解决的办法:

1. 关掉自动布局。

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

iOS开发-CGAffineTransformMakeRotation改变了中心解决办法

标签:blog   http   os   io   strong   ar   for   art   div   

原文地址:http://www.cnblogs.com/yido9932/p/3948922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!