Перестраиваемый UILabel, который прокручивается по экрану

Правильно, я пытаюсь получить ярлык с текстом в нем (сделано уже очевидно), который прокручивается по экрану.

Текст, вводимый в метку, выполняется с помощью UITextField и UIButton. Это обновление прекрасно.

Но я пытаюсь получить UILabel для изменения размера в соответствии с объемом ввода текста, так что вся строка текста прокручивается по всему экрану.

Это код, который у меня есть на данный момент для прокрутки:

[lblMessage setText: txtEnter.text];

CABasicAnimation *scrollText;

scrollText=[CABasicAnimation animationWithKeyPath:@"position.x"];
scrollText.duration = 3.0;
scrollText.repeatCount = 10000;
scrollText.autoreverses = NO;
scrollText.fromValue = [NSNumber numberWithFloat:500];
scrollText.toValue = [NSNumber numberWithFloat:-120.0];

[[lblMessage layer] addAnimation:scrollText forKey:@"scrollTextKey"];

Проблема в том, что иногда начинается прокрутка в середине экрана и иногда исчезает, прежде чем она полностью пройдет.

Он также сокращает текст из-за того, что метка имеет один размер. Я не знаю, как это изменить.

Спасибо заранее.

Dom

Ответ 1

Я считаю, что для этого случая будет работать что-то похожее на решение для этого вопроса.

Вы можете встраивать UILabel в UIScrollView, при этом UIScrollView устанавливается на максимальный размер ярлыка, который вы хотите отображать на экране за один раз. UIScrollView должен будет отключить индикаторы прокрутки, используя его showHorizontalScrollIndicator и showVerticalScrollIndicator. При изменении текста вы можете сделать следующее:

[lblMessage setText: txtEnter.text];
[lblMessage sizeToFit];
scrollView.contentSize = lblMessage.frame.size;

за которым следует код анимации панорамирования, как описано в вышеприведенном вопросе, причем рамка должна быть отображена как крайняя справа от UILabel. Это приведет к тому, что текст будет прокручиваться с постоянной скоростью по метке. Если вы хотите, чтобы метка прокручивалась назад до начала, вы можете использовать UIView setAnimationRepeatAutoreverses: и setAnimationRepeatCount: методы в начале вашего блока анимации.

Ответ 2

Смена ярлыка произвела большое спасибо!

Теперь я поместил метку в scrollview, и у меня появилось это, но я теперь не уверен в точной анимации, чтобы добавить к этому. Я попробовал некоторые из них по ссылке, которую вы мне дали, но они не работают.

EDIT: Nevermind, теперь у меня все работает.

CGPointMake (x, x) - это то, что мне нужно для contentOffset.