Как добавить шатер на этикетку - PullRequest
3 голосов
/ 13 июля 2009

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

Ответы [ 2 ]

9 голосов
/ 13 июля 2009

Вот идея:

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

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

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

4 голосов
/ 08 декабря 2009

Я последовал вашей идее и сделал это:

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

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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...