2009-07-13 3 views
3

У меня есть ярлык в верхней части моего UIView.Я показываю некоторые сообщения на нем через массив с помощью таймера. Но теперь я хочу, чтобы эти сообщения отображались в стиле MARQUEE. Я не получаю никакого способа начать. Любой исходный код, методы использования, любой стиль анимации, любой другой подход. Заранее спасибоКак добавить выделение на ярлык

+1

не является MARQUEE устарел? Вы не должны его использовать. Я считаю, что вы можете получить тот же эффект с javascript. –

+2

@MercerTraieste Я не думаю, что этот вопрос задает вопрос о теге HTML 'marquee'. Речь идет о достижении такого же стиля, как тег marquee, использующий класс UILabel в iPhone SDK. – Jasarien

+0

[Этот вопрос] (http://stackoverflow.com/questions/430942/resizable-uilabel-which-scrolls-across-the-screen) очень близок к тому, что вы просите. –

ответ

9

Вот идея:.

  • Набор clipsToBounds к истинным на UIView, что ваш UILabel сидит в
  • Затем запустите блок UIViewAnimations (смотрите в документации для того, как использовать его , его очень просто)
    • Создать новую метку с его рамой, установленной в положение, которое находится за пределами границ вмещающего UIView
    • установить позицию предыдущего лейбла где-то слева за пределами ограждающего UIView
    • установите положение следующей метки в том месте, где раньше использовалась предыдущая метка.
  • совершить анимации

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

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

4

Я последовал за вашу идею, и я сделал это:

* Я создал вид контейнера.

messageView = [[UIView alloc] initWithFrame:CGRectMake(27, 0, 235, 19)]; 
[messageView setClipsToBounds:YES];//With This you prevent the animation to be drawn outside the bounds. 

* После этого я создал UILabel с текстом, который будет отображаться и добавил к моему контейнерной

lblTime = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 235, 19)]; 
[lblTime setBackgroundColor:[UIColor clearColor]]; 
[messageView addSubview:lblTime]; 

* Наконец, я создал такую ​​функцию:

- (void)sendNotification:(NSString*)txt{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:3.5]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:messageView cache:YES]; 
    [lblTime setText:txt]; 
    [lblTime setTextAlignment:UITextAlignmentLeft]; 
    lblTime.frame = CGRectMake(260, 0, 258, 19); 
    [UIView commitAnimations]; 
} 
Смежные вопросы