我有一个圆形图像,我想垂直“挤压”它,使其看起来更像一条水平线,然后将其扩展回原始形状。我认为这可以通过将图层的 anchor 设置为中心然后通过 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];
但是图像向顶部收缩而不是围绕中心收缩。
最佳答案
你给它一个框架,它的原点在左上角,与它开始的位置相同。您可能想做更多类似的事情,添加图像高度的一半:
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);
或者——并且更有效——你可以将 ImageView 的 transform
属性设置为,比如说,CGAffineTransformMakeScale(1, 0.01)
而不是弄乱它的框架。这将以图像的中间为中心,您可以通过将转换设置为 CGAffineTransformIdentity
轻松撤消它。
关于iOS - 垂直挤压图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121783/