2012-04-13 2 views
2

У меня есть длинный текст, который мне нужно отобразить в одной строке. Текст слишком длинный, чтобы вписаться в объект UITextField. Я ищу способ анимации текста (или самого объекта uitextfield) справа налево. Я видел это в некоторых приложениях для iPhone, но не знаю, как это сделать.Анимация текста справа налево в UITextField

Идея состоит в том, что если текст большой, чтобы соответствовать, прокрутите его медленно влево, чтобы пользователь мог его прочитать.

Любая идея, как это можно достичь?

Спасибо!

+0

Посмотрите на beginAnimations в UIView в разделе Анимация просмотров или анимационных просмотров с блоком –

ответ

2

Вы можете использовать такое решение, как Brian Stormont's 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 

Это довольно старый, но я использую его в приложение доставки в настоящее время.

Связанный с Tangential, но не обязательный, это анимированный текстовый класс AUIAnimatedText, который позволяет вам анимировать другие свойства текста, такие как размер и цвет.

+0

Это именно то, что я искал. Спасибо! – bneupaane

0

Я не делал ничего подобного, но я думаю, что вы можете сделать это верховные textRectForBounds: метод (UITextField documentation) и используя NSTimer. В таймере вы должны просто позвонить setNeedsDisplay метод текстового поля.

0

Существует одно решение, но на самом деле не мой любимчик .. Если у вас есть AutoScrollLabel * marqueeLabel в вашем ViewController затем установить его текст в методе viewWillAppear из ViewController как: -

marqueeLabel.text = marqueeLabel.text; 

Я не нашел что-то другое, кроме этого. Также, если у вас есть эта проблема, попробуйте использовать многозадачность в вашем iphone/ipod, и когда вы снова откроете приложение. Вы не найдете анимацию marqueeLabel. Для этого добавьте заявление в commonInit класса AutoScrollLabel: -

[[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 или связан с авторами каким-либо образом.

Смежные вопросы