Iphone &引用;壁球“;动画效果
我试图让我的图像看起来像是被踩到了,或者被“压扁”。 这是我必须完成的代码,但它不是仅挤压,而是将底部向上推(因为它是缩放动画)。有没有一种方法可以使图像缩短而不是缩小?也许我需要使用两个图像:Iphone &引用;壁球“;动画效果,iphone,objective-c,Iphone,Objective C,我试图让我的图像看起来像是被踩到了,或者被“压扁”。 这是我必须完成的代码,但它不是仅挤压,而是将底部向上推(因为它是缩放动画)。有没有一种方法可以使图像缩短而不是缩小?也许我需要使用两个图像: [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut
animations:^{
basketView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 0.9);}
completion:^(BOOL finished){if (finished){
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut
animations:^{
basketView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);}
completion:NULL];}}];
缩放将相对于视图图层的
锚点发生,默认情况下,锚点是图层的中心
因此,可供选择的办法是:
-改变锚点;
-将变换分为三部分:(1)将锚点平移到底部;(2) 规模;(3) 把锚移回原来的位置;
-将变换分为两部分:(1)尺度;(2) 将底部平移到原来的位置
如果其他条件相同,则更改定位点与翻译具有相同的效果,因此摘要版本将以某种形式添加翻译,而不管您如何描述整个过程。最简单的方法可能是在设置变换的同时设置层的中心。由于缩放和平移都是同时应用的线性变换,因此它们将完全同步
例如,你会改变:
basketView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 0.9);
更像是:
CGFloat amountToScale = 0.9f;
CGAffineTransform transform =
CGAffineTransformMakeTranslation(0.0f,
(1.0f - amountToScale)*0.5f*basketView.bounds.size.height);
basketView.transform = CGAffineTransformScale(transform,
1.0f, amountToScale);
在这种特定情况下,缩放到0.9将总共消除原始大小的0.1。锚定点位于中心,因此0.05的锚定点从顶部脱落,0.05的锚定点从底部脱落。你不想让任何东西从底部脱落,所以你向下移动视图来抵消它。就像缩放一样,但底部保持在固定位置?