在UITextField中从右到左动画文本

时间:2012-04-13 05:40:50

标签: ios

我有一个很长的文字,我需要在一行中显示。文本太长,无法容纳在UITextField对象中。我正在寻找一种从右到左动画文本(或uitextfield对象本身)的方法。我在一些iPhone应用程序中看到过,但不知道该怎么做。

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

知道如何实现这一目标吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用像Brian Stormont AutoScrollLabel这样的解决方案,进行更多讨论here

在包含之后,您需要大致执行以下操作:

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

它已经很老了,但我现在正在运送应用程序中使用它。

切线相关但不是必需的是这个动画文本类AUIAnimatedText,它允许您为文本的其他属性设置动画,如大小和颜色。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

有一个解决方案,但不是我的最爱.. 如果viewController中有 AutoScrollLabel * marqueeLabel ,则将viewConill的viewWillAppear方法中的文本设置为: -

marqueeLabel.text = marqueeLabel.text;

除了这个,我还没有找到任何其他东西。 此外,如果你有这个问题,那么尝试在你的iphone / ipod中使用多任务处理,当你再次打开你的应用程序时...你将找不到marqueeLabel动画..为此在AutoIncrollLabel类的commonInit中添加一个语句: -

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

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

[[NSNotificationCenter defaultCenter] removeObserver:self];

答案 3 :(得分:0)

现在有UILabel的替代品可以解决这个问题:

https://github.com/cbpowell/MarqueeLabel

  

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

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