我有一个UILabel
可以滑入和滑出视图,但在滑回之后它会消失。我希望它能坚持下去。
我怎样才能做到这一点?另外,为什么会这样呢?
以下是代码:
[UIView animateWithDuration:0.1
delay:0.0
options:UIViewAnimationOptionAutoreverse
animations:^{
[self.listLabel setFrame:CGRectMake(325, 141, 320, 181)];
}
completion:nil];
感谢。
答案 0 :(得分:2)
UIViewAnimationOptionAutoreverse
向后和向前运行动画。必须与UIViewAnimationOptionRepeat
选项结合使用。
答案 1 :(得分:0)
为什么不为标签使用UIViewAnimationOptionCurveEaseOut和UIViewAnimationOptionCurveEaseIn动画选项? 只需设置你的标签的frame.origin.x = [在它的超级视图的右侧之外] 当您想要使用EasyOut动画再次滑入时,将其设置回原始位置。 这就是我所说的......
CFRect frame = self.listLabel.frame;
//Point to hide your label by sliding it outside the right side of it's parent's view.
// mask or clipToBounds of parent's view must be YES
frame.origin.x = [self.listLabel.superview.frame.size.width];
[UIView animateWithDuration:0.1
delay:0.0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
[self.listLabel setFrame:frame];
}
completion:nil];
当你想要重新滑入时,使用相反的动画和标签的原始位置,当然你需要将它的原始位置存储在某处,这样你就可以将它滑回来。
[UIView animateWithDuration:0.1
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
[self.listLabel setFrame:label_original_frame];
}
completion:nil];
答案 2 :(得分:0)
UIViewAnimationOptionAutoreverse
专为循环动画而设计。要在屏幕外和背面反弹,你应该把它写成2个动画:
CGRect originalFrame = self.listLabel.frame;
[UIView animateWithDuration:0.05
delay:0.0
options:UIViewAnimationOptionLayoutSubviews
animations:^{
[self.listLabel setFrame:CGRectMake(325, 141, 320, 181)];
}
completion:^(BOOL finished){
[UIView animateWithDuration:0.05
delay:0.0
options:UIViewAnimationOptionLayoutSubviews
animations:^{
[self.listLabel setFrame:originalFrame];
}
completion:nil];
}
];
答案 3 :(得分:0)
由于似乎仍然没有有效的答案,我提出了一种(现在可能的)方法:
在Xcode 6中,当应用程序在模拟器中运行时,转到顶部栏中的“Debug”,选择“View Debugging”和“Capture View Hierarchy”。然后去搜索你丢失的标签。您还可以在右侧Xcode栏中看到Label的属性等。