IPhone上的UILabel/text动画

IPhone上的UILabel/text动画,iphone,animation,uilabel,Iphone,Animation,Uilabel,我花了相当多的时间试图弄清楚如何将UILabel从屏幕的一个边缘移动到另一个边缘。 基本上,我希望我从用户那里得到的文本从右到左出现在屏幕上,然后消失,然后继续循环并再次出现(你在时代广场上看到的srt:-)您可以使用核心动画和计时器以及所有工具包,或者您可以使用UIView上的Methodof启动并提交动画,并重新启动动画事件 尝试以下方法: -(void)animateLoop { myLabel.frame = CGRectMake(-myLabel.bounds.size.wid

我花了相当多的时间试图弄清楚如何将UILabel从屏幕的一个边缘移动到另一个边缘。
基本上,我希望我从用户那里得到的文本从右到左出现在屏幕上,然后消失,然后继续循环并再次出现(你在时代广场上看到的srt:-)

您可以使用核心动画和计时器以及所有工具包,或者您可以使用UIView上的Methodof启动并提交动画,并重新启动动画事件

尝试以下方法:

-(void)animateLoop {
    myLabel.frame = CGRectMake(-myLabel.bounds.size.width, 100, myLabel.bounds.size.width, myLabel.bounds.size.height);
    [UIView beginAnimations:@"timesquare" context:nil];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDidStopSelector:@selector(animateLoop)];
    myLabel.frame = CGRectMake(480, 100, myLabel.bounds.size.width, myLabel.bounds.size.height);
    [UIView commitAnimations];    
}

您可以将核心动画与计时器和所有工具包一起使用,也可以使用UIView上的Methodof来启动和提交动画,并重新启动动画事件

尝试以下方法:

-(void)animateLoop {
    myLabel.frame = CGRectMake(-myLabel.bounds.size.width, 100, myLabel.bounds.size.width, myLabel.bounds.size.height);
    [UIView beginAnimations:@"timesquare" context:nil];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDidStopSelector:@selector(animateLoop)];
    myLabel.frame = CGRectMake(480, 100, myLabel.bounds.size.width, myLabel.bounds.size.height);
    [UIView commitAnimations];    
}

如果希望标签保持在固定位置,则可以在标签内移动文本,例如,使用NSTimer触发并调用方法以定期(秒左右)更新UiLabel:

NSString * longText = [NSString stringWithString:@"this is a  long text"];
// begin loop here
NSString * firstLetter = [longText substringToIndex:1]);
NSString * otherLetters = [longText substringFromIndex:1]);
longText = [otherLetters stringByAppendingString:firstLetter]; 
UILable.text = longText;
// wait here a second or so 
// end loop

如果希望标签保持在固定位置,则可以在标签内移动文本,例如,使用NSTimer触发并调用方法以定期(秒左右)更新UiLabel:

NSString * longText = [NSString stringWithString:@"this is a  long text"];
// begin loop here
NSString * firstLetter = [longText substringToIndex:1]);
NSString * otherLetters = [longText substringFromIndex:1]);
longText = [otherLetters stringByAppendingString:firstLetter]; 
UILable.text = longText;
// wait here a second or so 
// end loop

在一般意义上,可以通过首先指定标签的帧、设置标签的属性(文本、背景色)并将其添加到您的 视图的子视图,然后使用
[UIView animateWithDuration:delay:options:animations:completion]
指定最终帧。这 方法“只是为了一个标签”需要多一点代码,但最终还是值得的

下面的代码将在左上角(0,0)放置一个标签,并将其设置为右下角的动画 (精确的坐标将取决于您的iOS设备)。一般步骤如下:

  • 计算标签所需的边框大小,这取决于字体和字体 标签尺寸
  • 获取应用程序框架,请参见为什么使用
    applicationFrame
    而不是
    bounds
  • 计算你的目的地坐标;在本例中,我们希望标签的右下角 触摸屏幕的右下角,我们计算左上角的坐标以说明 标签框
  • 使用
    initWithFrame
  • 使用背景色设置标签样式,设置文本、字体等。注意:您显然必须 使用计算框架时指定的相同字体和大小
  • 将子视图(UILabel)添加到当前视图中
  • 动画!这是在作为参数传递给
    动画:
    的块中完成的,我们正在指定 帧的最终位置(请注意,我们在动画过程中不会更改帧的大小),我们先前计算的该位置位于右下角
  • 最后,动画完成后,使用removeFromSuperview删除标签
这是一个非常通用的例子,这里可以做很多事情, 包括同时为字幕效果制作多个标签的动画等 添加其他动画请注意,视图控制器可能会被取消,并且 动画仍在运行。通常情况下,最好使用
[self.view.layer removeAllAnimations]
停止动画,并删除可能仍然存在的子视图(我通常会保留一个NSMutableArray,其中包含我创建的所有标签,以便我可以在
视图中将它们清理干净


在一般意义上,可以通过首先指定标签的帧、设置标签的属性(文本、背景色)并将其添加到您的 视图的子视图,然后使用
[UIView animateWithDuration:delay:options:animations:completion]
指定最终帧。这 方法“只是为了一个标签”需要多一点代码,但最终还是值得的

下面的代码将在左上角(0,0)放置一个标签,并将其设置为右下角的动画 (精确的坐标将取决于您的iOS设备)。一般步骤如下:

  • 计算标签所需的边框大小,这取决于字体和字体 标签尺寸
  • 获取应用程序框架,请参见为什么使用
    applicationFrame
    而不是
    bounds
  • 计算你的目的地坐标;在本例中,我们希望标签的右下角 触摸屏幕的右下角,我们计算左上角的坐标以说明 标签框
  • 使用
    initWithFrame
  • 使用背景色设置标签样式,设置文本、字体等。注意:您显然必须 使用计算框架时指定的相同字体和大小
  • 将子视图(UILabel)添加到当前视图中
  • 动画!这是在作为参数传递给
    动画:
    的块中完成的,我们正在指定 帧的最终位置(请注意,我们在动画过程中不会更改帧的大小),我们先前计算的该位置位于右下角
  • 最后,动画完成后,使用removeFromSuperview删除标签
这是一个非常通用的例子,这里可以做很多事情, 包括同时为字幕效果制作多个标签的动画等 添加其他动画请注意,视图控制器可能会被取消,并且 动画仍在运行。通常情况下,最好使用
[self.view.layer removeAllAnimations]
停止动画,并删除可能仍然存在的子视图(我通常会保留一个NSMutableArray,其中包含我创建的所有标签,以便我可以在
视图中将它们清理干净

不用说(事实上,这是很重要的说…)在这个问题上的帮助将非常感谢。不用说(事实上,这是很重要的说…)。