iOS - 垂直挤压图像

标签 ios uiview layer uiviewanimation

我有一个圆形图像,我想垂直“挤压”它,使其看起来更像一条水平线,然后将其扩展回原始形状。我认为这可以通过将图层的 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/

相关文章:

java - 在java中开发服务层的最佳方式

ios - Swift PageViewController 渐变背景

ios - 如何在 CollectionView 中添加 SearchBar?

ios - UIButton 正常工作,但不在 popoverPresentationController

ios - UIButtons 在直接添加到 ScrollView 但不是间接添加时接收触摸事件

camera - 截取 UIView 的屏幕截图,其中它的 subview 是相机 session

iOS AMSlideMenu 接收器 (<MainVC : 0x8f92a90>) has no segue with identifier 'rightMenu' '

ios - 线程 1 : signal SIGABRT - multiple views

iphone - 为什么 Three20 会做一些奇怪的事情,导致 Xcode 4.2 出现问题?

ios - 如何从它的 super 层中删除 CAGradientLayer