iOS - раздавить изображение по вертикали - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть круглое изображение, которое я хочу «сжать» по вертикали, чтобы оно больше походило на горизонтальную линию, а затем развернуло его до первоначальной формы.Я думал, что это будет работать, установив опорную точку слоя в центр, а затем анимируя кадр с помощью 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 Ответ

2 голосов
/ 03 февраля 2012

Вы даете ему рамку, которая имеет свое происхождение - вверху слева - в том же положении, в котором она была запущена.Возможно, вы захотите сделать что-то более похожее на это, добавив половину высоты изображения:

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.

...