在创建自定义视图时,它包含刷新,* 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];
}];
}];
该代码适用于任何其他视图,但由于这是一个自定义视图,由于某种原因,完成块未执行。 会发生的是它只执行第一个块。我在“完成”块中设置了一个断点,它停在那里,但动画没有发生。我试图设置隐藏标签但仍然没有发生。
有什么想法吗?
答案 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)
从您的界面构建器主屏幕中删除自动布局。 你的视图可能正在改变它的框架,但是自动布局(可能)强迫它在其他地方......