【问题标题】:Make 2 animations in Custom View在自定义视图中制作 2 个动画
【发布时间】:2013-10-08 13:11:57
【问题描述】:

我正在创建一个自定义视图,它包含 Refresh、*LayoutSubviews* 等方法,遵循 tutorial

我想要一个标签动画增长,它的全宽,然后回到 0 宽度。我在“刷新”方法中使用此代码:

[UIView animateWithDuration:1.3 animations:^{
        CGRect frame = CGRectMake(50, 15, 140, 20);
        [labelFav setFrame:frame];
    } completion:^(BOOL finished) {
        //[labelFav setHidden:YES];
        [UIView animateWithDuration:1.3 animations:^{
            CGRect frame = CGRectMake(50, 15, 0, 20);
            [labelFav setFrame:frame];
        }];

    }];

该代码适用于任何其他视图,但由于由于某种原因这是自定义视图,因此完成块未执行。 发生的事情是它只执行第一个块。我在“完成”块中设置了一个断点,它停在那里但动画没有发生。我尝试设置隐藏标签,但仍然没有发生。

有什么想法吗?

【问题讨论】:

  • 你在使用自动布局吗?

标签: ios objective-c animation uiview uiviewcontroller


【解决方案1】:

从界面生成器主屏幕中删除自动布局。 您的视图可能正在更改其框架,但自动布局(可能)将其强制到其他地方...

【讨论】:

    【解决方案2】:

    另一种解决问题的方法。 经过测试。

    [UIView animateWithDuration:1.3 animations:^{
    
        CGRect frame = CGRectMake(50, 15, 140, 20);
        [labelViewForFav setFrame:frame];
    
    } completion:^(BOOL finished) {
    
       [UIView animateWithDuration:1.3 animations:^{
    
                    CGRect frame = CGRectMake(50, 15, 0, 20);
                    [labelViewForFav setFrame:frame];
    
            } completion:^(BOOL finished) {
    
            }];
    }];
    

    问题是当您使 UIlabel 宽度小于其当前宽度时。动画没有正确完成。动画不可见只是跳到最后一帧。

    解决它把你的标签放在一个视图中,改变这个视图的大小,它就会正常工作。

    【讨论】:

    • 是的,我做到了。第一个动画正确发生,是应该在第一个动画完成后立即开始的动画。
    • 我写了一个代码,希望它能正常工作。让我知道结果。
    • 抱歉没有,它和我的代码发生了同样的事情。第一个动画会发生,但应该在第一个动画之后发生的动画不会。尝试在刷新方法的自定义视图中使用它。它适用于任何其他视图,但这必须在自定义视图的刷新方法中发生。谢谢你的尝试。
    • 我认为 shirink 不工作,因为锚点。当您使用 anition 扩展 UIlabel 时,它可以工作。你的第二个动画跳到结论我会为你找到另一种方式
    • 我找到了另一种方式,我的朋友希望它对你没问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多