我有一个UIView,当我触摸它时会缩小,并在触摸结束或取消时缩小。
我一直在缩放这个视图
缩小:
CGAffineTransform transform = CGAffineTransformMakeScale(0.95, 0.95);
self.transform = transform;
向上扩展:
CGAffineTransform transform = CGAffineTransformMakeScale(1.0, 1.0);
self.transform = transform;
这不保留任何其他变换。我知道我可以使用它来保留旧的变换:
缩小:
CGAffineTransform transform = CGAffineTransformScale(self.transform, 0.95, 0.95);
self.transform = transform;
向上扩展:
CGAffineTransform transform = CGAffineTransformScale(self.transform, 1.0, 1.0);
self.transform = transform;
但是,当然这里扩大规模没有影响 - 此外还有可能应用累积缩小动画。基本上我想要一种绝对应用比例变换而不影响任何其他变换的方法。有没有办法做到这一点?我不认为使用1.0 / 0.95作为放大因子,因为视图可能会在取消或结束之前接收两次触摸。
我想我问的问题与Applying just the scale component of a CGAffineTransform to a UIView相同:但我不认为这里的答案对我有用。
我的目标是iOS 7及更高版本。
答案 0 :(得分:2)
我不确定这是否正是您正在寻找的,但对我来说,我需要刻度始终保持绝对一致,所以我直接修改矩阵。
CATransform3D transform = layer.transform;
if (makeSmaller)
{
// Scale to 0.9
transform.m11 = 0.9f;
transform.m22 = 0.9f;
}
// Cell needs to grow to normal size
else if (restoreToOriginal)
{
// Scale to 1.0 again
transform.m11 = 1.0f;
transform.m22 = 1.0f;
}
// Set the desired Y translation
transform.m42 = desiredffset;
layer.transform = transform;