当前位置: 首页 > 知识库问答 >
问题:

在为UILabel设置动画后显示线条

薛烨
2023-03-14

我正在MyUILabel上执行2个动画。MyUILable是从UILabel派生的自定义类,它实现了只绘制边框的drawRect方法。

这是我的动画代码:

- (void)animateLableIn
{
    UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionAllowUserInteraction;
    [UIView animateWithDuration:0.1f delay:0.0 options:options animations:^{

        label.transform = CGAffineTransformMakeScale(1.1f, 1.1f);

    } completion:^(BOOL finished) {
        if (finished) {
            [self animateLableOut];
        }
    }];
}

- (void)animateLableOut
{
    UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionAllowUserInteraction;
    [UIView animateWithDuration:0.1f delay:0.0 options:options animations:^{

        label.transform = CGAffineTransformMakeScale(1.0f, 1.0f);

    } completion:^(BOOL finished) {
        if (finished) {
        }
    }];
}

在第一个动画开始时,一条灰色的线出现在我的标签的顶部边缘,并且在所有动画完成后仍然存在。我想提一下,这条线不是我的绘图实现的一部分,即使我的绘图是空的,它也会出现。标签也比最初小一点。

所附图片不成比例。

动画之前:

动画后:

猜猜为什么会这样?

共有1个答案

公德明
2023-03-14

我终于找到了问题所在。在动画运行时,我已经更改了标签的框架。在动画完成后更改标签的框架修复了该问题。

 类似资料:
  • 我试图在三个步骤中一起动画两个UIView(一个UIImageView和一个UILabel): 0)两个视图都在屏幕的左上角 1)然后我改变帧(和标签字体大小,太)所以视图变得更大,在中心2)我再次改变帧(和标签字体大小,太)把两个视图放在boton的右上角。(这个aniamtion开始几秒钟后) 3)我从超级视图中删除两个视图。 UIImageView在每次动画后都是完美的。对于UILabel来

  • 我已经在NSNotificationCenter中注册了两个观察员,keyboardWillShow:和keyboardWillHide: 在这两种方法中,当我尝试设置包含UITextView的UIView的动画时,它会跳到我尝试设置动画的帧,然后再设置回原始位置的动画。我在touchesbearth方法中尝试了相同的动画代码来测试它,它在那里工作得很好(设置新帧的动画,而不是跳回原始位置)。 我

  • 我有一个包含4个嵌套线性布局的线性布局。我需要隐藏第一个嵌套布局并显示2和3,然后隐藏2和3并显示1。我想用滑动效果对这些过渡进行动画处理。所以有屏幕的第一张幻灯片,然后是2和3幻灯片。我设法使1滑出动画(虽然不是很顺利),但不知道如何从视图继续滑动。去查看。可见。 如果没有动画,我只需在1号做SetVisibly来隐藏它,然后在2/3号做SetVisibly来拍摄它们,这是非常容易出错的,文本重

  • 我试图在创建自定义控件的同时学习一些动画。我在这里经历了一个奇妙的教程:http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit 我已经让它工作了,开发者在github上有一个指向他的代码的链接:https://github.com/funkyboy/How-To-Create-a-Rot

  • 我想在我正在写的一个应用程序中取得效果,也许你能帮我。 视图层次结构在这一点上相当复杂,所以为了简单起见,让我们假设我有一个UILabel,其Alpha值设置为0。目前,我正在使用一个UILongPressGestureRecognitor,它在几秒钟后调用一个方法来更新UILabel的文本,并执行一个UIView动画块来很好地显示它(在1秒的时间内将Alpha设置回1——淡入)。 该块在新更新的

  • 我的问题:我的ListView中的一个项目在我开始滚动后会动画。它不是最后一项,动画应该完成。一旦问题消失,我滚动后,它只发生一次,并且只发生在列表中的单个项目上。 在我开始滚动ListView之后,如何停止单个项目的动画制作? 我希望在将项目添加到适配器时,动画仅运行一次。 我有一个列表适配器,当项目添加到列表中时,我在其中对它们进行动画处理。我正在使用声明的动画器在适配器的getView()方