超级视图通过CGAffineTransform缩放后的子视图错位

时间:2014-11-28 23:23:14

标签: ios objective-c cocoa-touch autolayout cgaffinetransformscale

我正在尝试使用以下方法扩展UiView及其UIImageView子视图: CGAffineTransform original = mv.transform; CGAffineTransform new = CGAffineTransformScale(original, 2, 2);

但是这导致ImageView远离它开始的地方:

Before the transofrm the imageview (the book) is at the center of the purple circle. This shows it after the transform(which is done in a spring animation block)

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

对于记录,IB中的autolayout已关闭

1 个答案:

答案 0 :(得分:1)

因此,经过几个小时的修补,我能够产生预期的效果。我也在改变动画块中视图的中心,我发现如果我将语句分配中心值分配新的transfrom之前,子视图在转换期间保持居中并且中心 - 更改。另外,我发现如果我正在使用UIView子类,我必须在缩放和移动视图上的动画块之前调用layoutIfNeeded。有趣的是,当使用常规UIView对象时,我发现没有必要调用layoutIfNeeded来产生所需的效果,即在中心变换和变换后保持子视图居中。

我不知道为什么在变换和坐标移动期间保持子视图居中所需的这些特定条件。我一直在查看Apple文档但尚未找到确定的解释。