在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的作者,也不是以任何方式与作者有关。