iOS translation and scale animation

前端 未结 4 909
日久生厌
日久生厌 2020-12-08 03:12

I\'m working on UIButton animation where:

The UIButton is set in the bottom center of the screen and scaled to a small size

_menuBtn.tra         


        
4条回答
  •  囚心锁ツ
    2020-12-08 03:39

    This phenomenon indicates that your button's original frame is wrong, probably because of its auto-resizing. Try setting its frame to the bottom center before you start the animation.

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        _menuBtn.superview.frame = CGRectMake(0, 513, 320, 30); // This is a quick and dirty solution to make sure your button's superview is in the right place. You probably don't want to do this and are more likely to review your view hierarchy.
        _menuBtn.frame = CGRectMake(145, 0, 30, 30); // Set the frame to the bottom center, please ensure that _menuBtn's transform hasn't been changed before this step
        _menuBtn.transform = CGAffineTransformMakeScale(0.1f, 0.1f);
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:5];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        CGAffineTransform scaleTrans  = CGAffineTransformMakeScale(1.0f, 1.0f);
        CGAffineTransform lefttorightTrans  = CGAffineTransformMakeTranslation(-200.0f,0.0f);
        _menuBtn.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans);
        [UIView commitAnimations];
    }
    

提交回复
热议问题