动画UIView的增长/收缩(Animate UIView grow/shrink)

2019-09-17 13:44发布

我有一个UILabel我想动画增长和收缩。 虽然大小的变化,我需要左下角保持静态的,因此它总是直接出现一个底部工具栏上方。 我使用下面的代码,以使标签成长:

[UIView animateWithDuration:kAnimationDuration delay:0.0 options:UIViewAnimationCurveEaseInOut 
                 animations:^{  
    CGFloat lblHeight = 42.0f;
    [label setFrame:CGRectMake(0.0, 
                CGRectGetMaxY(self.view.bounds) - kBottomBarHeight - lblHeight, 
                CGRectGetMaxX(self.view.bounds), 
                lblHeight)];                
} completion:^(BOOL finished) { }];

并使其缩小我用同样的逻辑,除了lblHeight设置为17.0f

该视图正确的增长,但是当我试图缩小它的框架改变动画没有设置动画。 它的光点到新的大小,然后进入动画新产地/位置。 我需要的帧的变化进行动画。 任何人都可以看到我做错了什么?

Answer 1:

一些修修补补之后,我已经成功通过执行以下操作来获得所需的行为。

在展开方法中,我使用的UIView动画来改变帧。 在收缩的方法中,我使用的UIView动画以改变边界和中心。

我有点困惑,为什么这工作,但试图缩小与框架没有。 如果任何人都可以分享一些洞察到这一点,将是巨大的。



Answer 2:

你真的不应该使用帧动画,而你应该用你的标签的变换属性。

不过,既然你想要一个角落保持静态,我认为最好的,你使用的Core Animation。 CALayer有一个叫做财产anchorPoint确定哪个点层将相对于旋转,我敢肯定它也是有效的增长/收缩的影响。



文章来源: Animate UIView grow/shrink