Ios 通过CGAffineTransform缩放superview后子视图错位

Ios 通过CGAffineTransform缩放superview后子视图错位,ios,objective-c,cocoa-touch,autolayout,cgaffinetransformscale,Ios,Objective C,Cocoa Touch,Autolayout,Cgaffinetransformscale,我正在尝试使用: CGAffineTransform original=mv.transform; CGAffineTransform new=CGAffineTransformScale(原始,2,2) 但这会导致ImageView与它的起点相去甚远: 在transofrm之前,imageview(书)位于紫色圆圈的中心。这将在变换后显示(在弹簧动画块中完成) 因为IB中的记录自动布局已关闭,所以在修补了几个小时后,我能够产生所需的效果。我还在动画块中更改视图的中心,我发现如果我将指定中心值

我正在尝试使用:

CGAffineTransform original=mv.transform;
CGAffineTransform new=CGAffineTransformScale(原始,2,2)

但这会导致ImageView与它的起点相去甚远:

在transofrm之前,imageview(书)位于紫色圆圈的中心。这将在变换后显示(在弹簧动画块中完成)


因为IB中的记录自动布局已关闭,所以在修补了几个小时后,我能够产生所需的效果。我还在动画块中更改视图的中心,我发现如果我将指定中心值的语句放置在指定新变换之前,则子视图在变换和中心更改期间保持居中。此外,我发现如果使用UIView子类,我必须在缩放和移动视图上的动画块之前调用
layoutifneed
。有趣的是,在处理常规UIView对象时,我发现不需要调用
layoutifneedd
,以产生所需的效果,即在中心对齐和变换后保持子视图居中


我不明白为什么在变换和坐标移动期间需要这些特定条件来保持子视图居中。我一直在查阅苹果的文档,但还没有找到确切的解释

@Andy我确实使用了自动布局将imageview居中,但即使我在执行转换之前移除了约束,问题仍然存在,我仍然认为这是自动布局对您造成的影响。您是否考虑过使用CALayer/CAShapeLayer?我知道居中是额外的工作,但值得一试。在使用translatesAutosizingMaskTo关闭自动布局之前,我在自动布局上也有类似的行为。。。有一个相当全面的研究,我在这里尝试了这一点,子视图在自动布局(centerX和centerY)的大视图中居中。它工作得很好。你确定你的“书”是紫色圆圈的子视图吗?@Andy Yup,它肯定是自动布局的。我没有添加任何约束并使用其frame属性设置视图,效果很好。@rdelmar设置centerX和centerY约束时是否也设置了视图的高度和宽度约束?我已将centerX、centerY以及高度和宽度约束添加到imageview。