iOS - 垂直压缩图像

时间:2012-02-02 23:47:30

标签: ios uiview layer uiviewanimation

我有一个圆形图像,我想垂直“挤压”,使其看起来更像水平线,然后将其展开回原始形状。我认为这可以通过将图层的锚点设置为中心然后通过UIViewAnimation设置框架的动画来实现,框架的高度为1。

[self.imageToSquish.layer setAnchorPoint:CGPointMake(0.5, 0.5)];

CGRect newFrame = CGRectMake(self.imageToSquish.frame.origin.x, self.imageToSquish.frame.origin.y, self.imageToSquish.frame.size.width, 1 );
[UIView animateWithDuration:3
                 animations:^{self.imageToSquish.frame = newFrame;}
                 completion:nil];

但是图像向顶部而不是在中心附近缩小。

1 个答案:

答案 0 :(得分:2)

你给它一个原点的框架 - 在左上角 - 与它开始的位置相同。你可能想要做更像这样的事情,增加图像高度的一半:

CGRect newFrame = CGRectMake(self.imageToSquish.frame.origin.x, self.imageToSquish.frame.origin.y + self.imageToSquish.frame.size.height / 2, self.imageToSquish.frame.size.width, 1);

或者 - 并且更有效 - 您可以将图像视图的transform属性设置为,例如CGAffineTransformMakeScale(1, 0.01),而不是弄乱其框架。这将以图像的中间为中心,您可以通过将变换设置为CGAffineTransformIdentity来轻松撤消它。