Question

I need to move an UIImageView from x,y to x,y1. This is what i have. I tried lots of different codes in -(void)animation, most using animateWithDuration but none seems to work. It just doesn't do anything. I must be missing something. Is .h correct? How would you make the image move? I then have to loop that, how can i do that? It's my first time with animate, I can't figure out what to do, it has to be simple. Thanks in Advance.


in .h I connected it this way

#import <UIKit/UIKit.h>

@interface ImageBeaconViewController : UIViewController {

    __weak IBOutlet UIImageView *blueView;
}

@end

the in .m I've got

- (void)viewDidLoad
{
    [self animation];
    [super viewDidLoad];
}

....

 - (void)animation{
    [UIView animateWithDuration:3 animations:^{
        blueView.alpha = 1;
        blueView.center = CGPointMake(blueView.center.x , blueView.center.y +??);
    }];
}

??= I still have to decide how much I want it to move This way the app crashes as soon as I get to the screen with the animation

Was it helpful?

Solution

Add Method Like This:

- (void) animateToPoint:(CGPoint)point {
    [UIView animateWithDuration:3 animations:^{
        blueView.alpha = 1;
        blueView.center = point;
    }];
}

Call like this:

- (void) viewDidAppear:(BOOL)animated {
    int distanceToSlide = 40; // will slide down 40px (use -40 to go up)
    CGPoint targetPoint = CGPointMake(blueView.center.x, blueView.center.y + distanceToSlide);
    [self animateToPoint:targetPoint];
}

NOTE

Notice that I put your animation call in viewDidAppear if you animate in viewDidLoad you won't see anything because your view isn't displayed yet.

If it's still not moving, make sure "useAutolayout" is not selected check this:

enter image description here

Just because I already built it, try this for tap to animate:

In your viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]init];
    tap.numberOfTapsRequired = 1;
    [tap addTarget:self action:@selector(handleTap:)];
    [self.view addGestureRecognizer:tap];
}

Then, use these:

- (void) handleTap:(UITapGestureRecognizer *)tap {
    int distanceToSlide = 40; // will slide down 40px (use -40 to go up)
    CGPoint targetPoint = CGPointMake(blueView.center.x, blueView.center.y + distanceToSlide);
    [self animateToPoint:targetPoint];
}

- (void) animateToPoint:(CGPoint)point {
    [UIView animateWithDuration:3 animations:^{
        blueView.alpha = 1;
        blueView.center = point;
    }];
}

Here's a way to loop it:

@implementation ImageBeaconViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    pointA = CGPointMake(40, 40);
    pointB = CGPointMake(250, 350);

    blueView.center = pointA;
}

- (void) viewDidAppear:(BOOL)animated {
    [self animate];
}

- (void) animate {
    if (CGPointEqualToPoint(_blueView.center, pointA)) {
        [self animateToPoint:pointB];
    }
    else {
        [self animateToPoint:pointA];
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void) animateToPoint:(CGPoint)point {
    [UIView animateWithDuration:1.0 animations:^{
        _blueView.alpha = 1;
        _blueView.center = point;
    } completion:^(BOOL finished) {
        if (finished) {
            [self animate];
        }
    }];
}

@end

OTHER TIPS

[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
        blueView.alpha = 1;
        blueView.center = CGPointMake(blueView.center.x , blueView.center.y + 100);
    } completion:^(BOOL finished) {

       //if you need any thing after animation is done
    }];

this is them code for animation i have

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top