Cocoa Touch,将变换标识设置为等于当前变换状态

时间:2013-04-21 07:33:47

标签: ios cocoa touch cgaffinetransform

如何更改transformIdentity。我们如何将变换设置为“零”,或者将视图的transformIdentity更改为所述视图变换的当前状态。

换句话说,我想缩放视图,然后将当前状态(比如缩放2.5)设置为视图的默认比例(比例为1)。

示例代码:

   view.transform = CGAffineTransformMakeScale(1, 2.5);

我想做的伪代码:

   view.transform = setTransformIdentityTo:view.currentState;

如果我理解正确transformIdentity是一个比例为1的状态,或者一个旋转为零,则默认为“零”变换。

注意:我想这样做的原因是我只能在视图的一个轴上设置负比例变换,并且在调用翻转之前,总是相对于视图的最后一个状态获得翻转视图。

4 个答案:

答案 0 :(得分:5)

CGAffineTransformIdentity会将视图或图层重置为原始的未转换状态,因此无法重新定义。
但是如果你想要你的“个人”重置变换,例如不同规模,为什么不简单地定义它,例如使用CGAffineTransform myCGAffineTransformIdentity = CGAffineTransform CGAffineTransformMakeScale (sx,sy);,并将其应用于您的观点?

答案 1 :(得分:2)

selectedSticker.transform = CGAffineTransformIdentity;

答案 2 :(得分:0)

似乎这适用于我想要做的事情:

CGAffineTransform trans = CGAffineTransformMakeScale(1, 2.5);

view.transform = CGAffineTransformConcat(selectedSticker.transform, trans);

答案 3 :(得分:0)

你可以做什么,如果你想让你的视图仍然被转换,即使它自己的变换是身份变换,也就是将它放在另一个被转换的视图中。为外部视图提供默认值所需的转换;内部视图是您进行实际工作的视图。

所以,假设您希望您的“身份”水平缩放2倍。您将外部视图的变换设置为该变换,并保持原样,并保持内部视图不变形。如果要添加进一步的转换,可以将其添加到内部视图中,当您想将其重置为默认值时,可以将内部视图的转换设置回(true)标识。您的内部视图仍将通过外部视图的变换进行缩放(或其他任何内容)。


注意:我简单地尝试了这一点,发现(a)自动布局在它上面进行了清理,(b)从锚点向外缩放,这意味着我的外部视图的水平刻度将我的内部视图推出了一点点 - 边界,(c)将外部视图的锚点更改为CGPointZero,甚至产生了更多的欢闹。

所以,虽然这在理论上是一个很好,简单,优雅的解决方案,但实际上它可能比它的价值更大,在这种情况下我建议what Reinhard Männer suggested