2012-04-13 24 views
2

我還有很長的文字,我需要在一行中顯示。文字太長,無法放入UITextField對象。我正在尋找一種從右向左動畫文本(或uitextfield對象本身)的方法。我曾在一些iPhone應用程序中看到過,但不知道如何去做。動畫文本到左的UITextField

的想法是,如果文本是大適合,慢慢地滾動它向左使用戶可以讀取它。

不知道如何可以做到這一點?

謝謝!

+0

查找下動畫觀點或動畫與塊 – 2012-04-13 05:48:43

回答

2

你可以使用像布萊恩·斯托蒙特的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它允許你喜歡動畫的大小和彩色文本的其他屬性。

+0

視圖中的UIView beginAnimations這正是我一直在尋找。謝謝! – bneupaane 2012-04-13 17:49:02

0

我還沒有做過這樣的事,但我認爲你可以做到這一點壓倒一切的textRectForBounds:法(UITextField documentation),並使用的NSTimer。在計時器你應該叫setNeedsDisplay文本字段的方法。

0

有一個解決方案,但不是我的最愛.. 如果你有AutoScrollLabel * marqueeLabel在你的viewController然後設置其文本的viewController的viewWillAppear中的方法: -

marqueeLabel.text = marqueeLabel.text; 

我沒有發現了除此之外的其他事物 此外,如果您有這個問題,然後嘗試在你的iPhone/iPod使用多任務處理,當你將再次打開應用程序..你不會找到marqueeLabel動畫..對於在AutoScrollLabel類commonInit添加語句: -

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

,並在該類中的dealloc多加一個聲明

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

現在有一個下拉更換爲UILabel將照顧這:

https://github.com/cbpowell/MarqueeLabel

概述:MarqueeLabel是當標籤的文本跨出可用寬度一個UILabel子類,增加了滾動字幕效果。標籤的滾動方向和速度/速率也可以被指定。所有標準的UILabel屬性(它的意義)都可以在MarqueeLabel中使用,它的行爲就像UILabel一樣。

我不是MarqueeLabel的作者或任何與作者有關​​的作者。