Uzair Dhada
Uzair Dhada

Reputation: 333

Animating UIview from top to bottom and vice versa

I have a UIView at X=0 and Y=0 location with the height of 110 and UIButton at the bottom of the screen with the height of 50, i want to show both by animating but the UIView must animate from top to to its height and UIButton from bottom to its height, i am totally new with this please help me how to do it.

Upvotes: 0

Views: 8329

Answers (4)

Pranit
Pranit

Reputation: 930

   private func startAnimation() {
            let animation = CABasicAnimation(keyPath: "position.y")
            animation.fromValue = 10  //Top Y 
            animation.toValue = 204  //Bottom Y
            animation.duration = 15 * 0.10 //duration * speed
            animation.repeatCount = 100
            animation.autoreverses = false
            animation.isRemovedOnCompletion = true
            animation.fillMode = .forwards
            self.yourView.layer.add(animation, forKey: "position.y")
        }

  private func stopAnimation() {
        self.yourView.layer.removeAllAnimations()
    }

Upvotes: 0

Smile
Smile

Reputation: 637

basic animation which may fit your requirement

[UIView transitionWithView:view
                  duration:0.5
                   options:UIViewAnimationOptionTransitionNone
                animations:^{
                   //update your frame here;
                }
                completion:nil];

Please go thru Apple Documentation and stack overflow

Upvotes: 1

princ___y
princ___y

Reputation: 1097

Try this for top to bottom Animation:

- (CAAnimation*)movedown;
{
    CABasicAnimation *animation = [CABasicAnimation animation];
    animation.keyPath = @"position.y";
    animation.fromValue = @600;
    animation.toValue = @50;
    animation.duration = 0.25;

    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];


    [trashView.layer addAnimation:animation forKey:@"basic"];
    trashView.layer.position =CGPointMake(0,-20);
    return animation;
}

and Code for Bottom to Top:

- (CAAnimation*)moveup;
{
    CABasicAnimation *animation = [CABasicAnimation animation];
    animation.keyPath = @"position.y";
    animation.fromValue = @-500;
    animation.toValue = @10;
    animation.duration = 0.25;

    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];


    [trashView.layer addAnimation:animation forKey:@"basic"];
    trashView.layer.position =CGPointMake(0,20);
    return animation;

}

for first block of code you can use to animate view but you have to replace your viewcontroller at trashview in code.

and second block use for button but you have to replace your button at trashview.

but you can set value of animation according to your need.

Upvotes: 1

Ankit Saini
Ankit Saini

Reputation: 294

Following code worked for me to show a search view on top.

if (!isSearchActive) {
    [UIView animateWithDuration:0.4
                          delay:0.1
                        options: UIViewAnimationOptionCurveEaseIn
                     animations:^{
                         searchView.frame   =   CGRectMake(0, 56, mainWidth, 50);
                     }
                     completion:^(BOOL finished){
                     }];
    isSearchActive=YES;
}
else{
    [UIView animateWithDuration:0.3
                          delay:0.1
                        options: UIViewAnimationOptionCurveEaseIn
                     animations:^{
                         searchView.frame   =   CGRectMake(0, 56, mainWidth, 0);
                     }
                     completion:^(BOOL finished){
                     }];
    isSearchActive=NO;
}

Call this code on click of any button to show and hide the view.

Upvotes: 1

Related Questions