将UILabel与内容复制并向右滑出一个&剩下一个

时间:2015-07-25 14:34:11

标签: ios objective-c animation uibutton uilabel

我是Objective-c的新手,并且不知道如何解决这个问题。我想我需要使用我的按钮编写代码,该按钮调用标签并更改标签'文本。有人想知道如何动画funFactLabel.text,以便(旧)文本滑出,并在单击按钮时滑入(新)文本?欢迎任何帮助!

- (IBAction)showFunFact:(UIButton *)sender {

    // ease of facts
   funFactLabel.text = [self.factBook randomFact];
}

1 个答案:

答案 0 :(得分:2)

使旧文本滑出并且新文本滑入的最简单方法是创建第二个标签并在动画完成时将其删除:

UILabel *oldLabel = [[UILabel alloc] initWithFrame:funFactLabel.frame];
[funFactLabel.superview addSubview:oldLabel];
oldLabel.text = funFactLabel.text;
// TODO: Configure oldLabel to match funFactLabel's font, colors, etc.

funFactLabel.text = [self.factBook randomFact];
funFactLabel.frame = CGRectOffset(funFactLabel.frame, funFactLabel.superview.bounds.size.width, 0);

[UIView animateWithDuration:0.5 animations:^{
    funFactLabel.frame = oldLabel.frame;
    oldLabel.frame = CGRectOffset(oldLabel.frame, -oldLabel.superview.bounds.size.width, 0);
} completion:^(BOOL finished) {
    [oldLabel removeFromSuperview];
}];

如果您不需要滑动动画,可以使用UIView的transitionWithView方法和Apple的内置动画之一来做类似的事情,而无需制作第二个标签:

[UIView transitionWithView:funFactLabel duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    funFactLabel.text = [self.factBook randomFact];
} completion:nil];