我有一个圆形图像,我想垂直“挤压”,使其看起来更像水平线,然后将其展开回原始形状。我认为这可以通过将图层的锚点设置为中心然后通过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];
但是图像向顶部而不是在中心附近缩小。
答案 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
来轻松撤消它。