在自定义视图中制作2个动画

时间:2013-10-08 13:11:57

标签: ios objective-c animation uiview uiviewcontroller

在创建自定义视图时,它包含刷新,* 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];
        }];

    }];

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

[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宽度小于其当前宽度时。动画没有正确完成。动画不可见只是跳到最后一帧。

解决它将标签放在视图中更改此视图的大小,它将正常工作。

答案 1 :(得分:0)

从您的界面构建器主屏幕中删除自动布局。 你的视图可能正在改变它的框架,但是自动布局(可能)强迫它在其他地方......