Вы можете сделать это с помощью CAAnimation для слоя вида:
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
[ani setDuration:0.5];
[ani setRepeatCount:1];
[ani setFromValue:[NSNumber numberWithFloat:1.0]];
[ani setToValue:[NSNumber numberWithFloat:0.1]];
[ani setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[myView layer] addAnimation:ani forKey:@"zoom"];
Это добавляет анимацию, которая заставляет представление сжиматься в его центр. Возможно, вы захотите добавить набор делегатов и реализовать animationDidStop:finished:
, в котором вы затем скрываете представление и сбрасываете масштаб слоя (см. Справочник CAAnimation ).
Чтобы создать противоположный эффект, просто поменяйте значения from и to.
Также обратите внимание, что, хотя масштаб не равен 1.0, свойство frame
не определено. То есть, если вы попытаетесь переместить его или изменить его размер, пока масштаб слоя не равен 1,0, произойдут странные вещи.