首页 > 代码库 > iOS开发-CGAffineTransformMakeRotation改变了中心解决办法
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的约束,而不是边缘位置的约束。
解决了。 睡觉了..
iOS开发-CGAffineTransformMakeRotation改变了中心解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。