iOS-垂直挤压图像
我有一个圆形的图像,我想垂直“挤压”,使它看起来更像一条水平线,然后将其展开回原始形状。我认为这可以通过将层的定位点设置为中心,然后通过UIViewAnimation设置帧的动画,使帧的高度=1来实现iOS-垂直挤压图像,ios,uiview,layer,uiviewanimation,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.
[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);
或者,您可以更有效地将图像视图的transform
属性设置为,例如,cAffineTransformMakeScale(1,0.01)
,而不是弄乱其帧。这将集中在图像的中间,通过将变换设置为cGraffeTransformIdentity
,您可以轻松地撤消它