我有一个 UIView,它在被触摸时缩小,在触摸结束或取消时缩小。
我一直这样缩放 View
按比例缩小:
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 作为放大系数,因为 View 可能会在一个被取消或结束之前接收到两个触摸。
我想我问的和这个问题是一样的:Applying just the scale component of a CGAffineTransform to a UIView但我不认为这里的答案对我有用。
我的目标是 iOS 7 及更高版本。
最佳答案
我不确定这是否正是您要找的,但对我来说,我需要比例始终保持绝对一致,所以我直接修改了矩阵。
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;
关于ios - 在不影响其他变换的情况下设置 UIView 缩放变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064103/