Я хочу реализовать отложенную «увеличивающую» анимацию в UIView, который перетаскивается с помощью подключенного UIPanGestureRecognizer.
Я использовал что-то похожее на следующий код:
UIView* innerView;
CGPoint startingPoint;
- (void)viewDidLoad {
innerView = [[[UIView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 200, 200)];
[[self view] addSubview:innerView];
[innerView setBackgroundColor:[UIColor blueColor]];
[innerView addGestureRecognizer:[[[UIPanGestureRecognizer alloc] autorelease] initWithTarget:self action:@selector(pan:)]];
// resize it later
[self performSelector:@selector(anim) withObject:nil afterDelay:1.5];
}
-(void)pan:(UIPanGestureRecognizer*)gr {
CGPoint gesturePoint = [gr translationInView:[self view]];
if (gr.state == UIGestureRecognizerStateBegan)
startingPoint = innerView.center;
else
innerView.center = CGPointMake(startingPoint.x + gesturePoint.x, startingPoint.y +gesturePoint.y);
}
-(void)anim{
innerView.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1);
}
Но представление «прыгает» при перетаскивании после применения масштаба. Такое поведение происходит не всегда, но псевдослучайно.
Кто-нибудь может пролить свет на этот вопрос или предложить другой подход?