在UITextField中从右向左animation文本

我有一个长文本,我需要在一行中显示。 文字太长,无法放入UITextField对象。 我正在寻找一种从右向左animation文本(或uitextfield对象本身)的方法。 我已经看到,在一些iPhone应用程序,但不知道如何做到这一点。

这个想法是,如果文本很大,可以慢慢向左滚动,以便用户阅读。

任何想法如何实现?

谢谢!

您可以使用像Brian Stormont的AutoScrollLabel这样的解决scheme, 在这里有更多的讨论。

包括你之后,你需要做大致如下:

AutoScrollLabel *marquee = [[AutoScrollLabel alloc] initWithFrame:marqueeFrame]; [view addSubview:marquee]; [marquee setScrollSpeed:16.8]; marquee.text = @"My long text"; [marquee readjustLabels]; [marquee scroll]; //This line is the one that actually starts the scrolling 

这是相当古老,但我现在在一个航运应用程序中使用它。

切线相关,但不是必需的是这个animation文本类AUIAnimatedText ,它允许你animation的文字的大小和颜色的其他属性。

我没有做这样的事情,但我认为你可以做这个重写textRectForBounds:方法( UITextField文档 ),并使用NSTimer 。 在计时器中,您应该调用文本字段的setNeedsDisplay方法。

有一个解决scheme,但不是真正的我最喜欢的..如果你有你的viewController中的AutoScrollLabel * marqueeLabel然后设置其viewView的viewWillAppear方法为: –

 marqueeLabel.text = marqueeLabel.text; 

除此之外,我还没有发现任何东西。 此外,如果你有这个问题,然后尝试在iPhone / iPod的多任务处理,当你将再次打开你的应用程序..你不会findmarqueeLabelanimation..为此,添加AutoScrollLabel类commonInit中的语句: –

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(readjustLabels) name:UIApplicationWillEnterForegroundNotification object:nil]; 

并在该类的dealloc中添加一个语句

 [[NSNotificationCenter defaultCenter] removeObserver:self]; 

现在有一个替代UILabel ,将会照顾这个:

https://github.com/cbpowell/MarqueeLabel

概述 :MarqueeLabel是UILabel子类,当标签的文本超出可用宽度时,会添加滚动字幕效果。 标签的滚动方向和速度/速率也可以被指定。 所有标准的UILabel属性(在有意义的地方)都可以在MarqueeLabel中使用,它的行为就像UILabel一样。

我不是MarqueeLabel的作者,也不是以任何方式与作者有关​​。