Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone &引用;壁球“;动画效果_Iphone_Objective C - Fatal编程技术网

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的锚定点从底部脱落。你不想让任何东西从底部脱落,所以你向下移动视图来抵消它。

就像缩放一样,但底部保持在固定位置?