Search code examples
iosanimationscale

Second animation


I have several buttons located at different sites in the view (storyboard), and I want that when I click on each of them to go to a given point,

To do this, I keep their location and initial size by:

CGPoint originalCenter1;
CGRect originalsize1;

CGPoint originalCenter2;
CGRect originalsize2;

in viewDidLoad

originalCenter1 = self.boton1.center;
originalsize1 = self.boton1.frame;

originalCenter2 = self.boton2.center;
originalsize2 = self.boton2.frame;

and the IBAction associated with each button, the animation ...

-(IBAction)move:(id)sender{

UIButton * pressedbutton = (UIButton*)sender;

[UIView animateWithDuration:3.0 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{

    CGAffineTransform scale = CGAffineTransformMakeScale(3.0, 3.0);
    pressedbutton.transform = scale;
    switch(pressedbutton.tag)
    {
        case 0:     
            pressedbutton.center = CGPointMake(784, 340);

            break;
        case 1:
            pressedbutton.center = CGPointMake(784, 340);

            break;

When already all have moved, I have a button Refresh that puts me to the initial position.

-(IBAction)refresh:(id)sender{

self.boton1.frame = originalsize1;
self.boton1.center = originalCenter1;
self.boton1.alpha=1;

self.boton2.frame = originalsize2;
self.boton2.center = originalCenter2;
self.boton2.alpha=1;

The problem is that the next time that pulse buttons, move to the position shown in the animation but the "scale" effect, doesn't work !!

Any help ??

Thanks.


Solution

  • I think you should use block try this...

    - (IBAction)tap:(UITapGestureRecognizer *)gesture
    {
        CGPoint tapLocation = [gesture locationInView:self.view1];
        for (UIView *view in self.view1.subviews) {
            if (CGRectContainsPoint(view.frame, tapLocation)) {
                [UIView animateWithDuration:5.0 animations:^{
                    [self setRandomLocationForView:view];
                }];
            }
        }
    }
    
    
    - (void)setRandomLocationForView:(UIView *)view
    {
        [view sizeToFit];
        CGRect sinkBounds = CGRectInset(self.view1.bounds, view.frame.size.width/2, view.frame.size.height/2);
        CGFloat x = your location.x;
        CGFloat y = yout location.y;
        view.center = CGPointMake(x, y);
    }