【问题标题】:Animate UIView grow/shrink动画 UIView 增长/收缩
【发布时间】:2012-06-02 07:35:18
【问题描述】:

我有一个 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

视图正确增长,但是当我尝试缩小它时,帧更改动画没有动画。它会变成新的大小,然后动画到新的原点/位置。我需要动画帧更改。谁能看到我做错了什么?

【问题讨论】:

    标签: iphone ios animation uiview


    【解决方案1】:

    您不应该真正使用帧来制作动画,而应该使用标签的 transform 属性。

    但是,由于您希望一个角落保持静止,我认为最好使用 Core Animation。 CALayer 有一个名为 anchorPoint 的属性,它决定了图层将相对于哪个点旋转,我很确定它也适用于增长/收缩效果。

    【讨论】:

    • 这个答案存在多个问题。 1) Frame 一个非常好的动画属性 2) +animateWithDuration 是 UIView 的核心动画包装器,3) 锚点只有在他操作底层属性时才有效。
    • @CodaFi 是的 Frame 是一个完美的动画属性,但我也见过很多它导致问题或奇怪行为的实例。而且我知道锚点只会影响图层操作,所以我的建议是摆脱 animateWithDuration 并使用类似 layer.transform = CATransform3DMakeScale(CGFloat sx,CGFloat sy,CGFloat sz);
    • 是的,但是在消除+ animateWithDuration时,他会失去动画。此外,他特别提到他希望保留视图位置的一角,并且在使用 MakeScale 时,他会从中心点缩小/增长。
    • 不,如果他设置:testLayer.anchorPoint = CGPointMake(1, 0); testLayer.transform = CATransform3DMakeScale(.5, .5, 1);该图层将缩放到一半大小,但其左下角将固定。在这种情况下,这只是一个简单的隐式动画。但同样的结果也适用于显式动画。也许他会失去 UIView 动画方法,但他可以在这种情况下使用显式核心动画。
    • @Kaaan 我尝试了您使用 transform 属性的建议,但出现了问题。如果我像这样设置转换: [label setTransform:CGAffineTransformMakeScale(1, 2)] 标签确实会像它需要的那样增长,但文本大小也会放大并变得模糊。你知道在不影响文本的情况下对 UILabel 应用转换的方法吗?
    【解决方案2】:

    经过一番修修补补,我设法通过执行以下操作获得了所需的行为。

    在 expand 方法中,我使用 UIView 动画来改变框架。 在shrink 方法中,我使用UIView 动画来改变边界和中心。

    我有点困惑为什么这行得通,但试图用框架缩小却行不通。如果有人能分享一些对此的见解,那就太好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多