在自定义视图中制作 2 个动画
Posted
技术标签:
【中文标题】在自定义视图中制作 2 个动画【英文标题】:Make 2 animations in Custom View 【发布时间】: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];
];
];
该代码适用于任何其他视图,但由于由于某种原因这是自定义视图,因此完成块未执行。 发生的事情是它只执行第一个块。我在“完成”块中设置了一个断点,它停在那里但动画没有发生。我尝试设置隐藏标签,但仍然没有发生。
有什么想法吗?
【问题讨论】:
你在使用自动布局吗? 【参考方案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 时,它可以工作。你的第二个动画跳到结论我会为你找到另一种方式 我找到了另一种方式,我的朋友希望它对你没问题?以上是关于在自定义视图中制作 2 个动画的主要内容,如果未能解决你的问题,请参考以下文章