如何解决IOS 动画中 Autolayout 与View Transforms的冲突_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 如何解决IOS 动画中 Autolayout 与View Transforms的冲突

如何解决IOS 动画中 Autolayout 与View Transforms的冲突

 2014/4/27 17:28:12  扬宇哥  博客园  我要评论(0)
  • 摘要:IOS的动画放大与缩小,并非按照找它的中心点放大和缩小,而是左上角。我分析了下原来是Autolayout与ViewTransforms的冲突造成的。-(void)addSubviewWithZoomInAnimation:(UIView*)viewduration:(float)secsoption:(UIViewAnimationOptions)option
  • 标签:for 解决 view iOS

class="p1">IOS 的动画放大与缩小,并非按照找它的中心点放大和缩小,而是左上角 。我分析了下原来是Autolayout 与View Transforms的冲突造成的。

 

- (void) addSubviewWithZoomInAnimation:(UIView*)view duration:(float)secs option:(UIViewAnimationOptions)option
{
// first reduce the view to 1/100th of its original dimension
CGAffineTransform trans = CGAffineTransformScale(view.transform, 0.01, 0.01);
view.transform = trans;    // do it instantly, no animation
[self addSubview:view];
// now return the view to normal dimension, animating this tranformation
[UIView animateWithDuration:secs delay:0.0 options:option
animations:^{
view.transform = CGAffineTransformScale(view.transform, 100.0, 100.0);
}
completion:nil];    
}

- (void) removeWithZoomOutAnimation:(float)secs option:(UIViewAnimationOptions)option
{
[UIView animateWithDuration:secs delay:0.0 options:option
animations:^{
self.transform = CGAffineTransformScale(self.transform, 0.01, 0.01);
}
completion:^(BOOL finished) { 
[self removeFromSuperview]; 
}];
}

 



 

解决方案: 

Disable auto layout:

self.imageView.translatesAutoresizingMaskIntoConstraints = YES;

 

【1】

http://stackoverflow.com/questions/12943107/how-do-i-adjust-the-anchor-point-of-a-calayer-when-auto-layout-is-being-used/14105757#14105757

上一篇: iOS学习笔记(2)UIWebViewDelegate委托协议定义的方法 下一篇: 没有下一篇了!
发表评论
用户名: 匿名