Я понимаю, что вы хотите marquee
эффект, который переместит каждого символа в метку справа.
Вот как это сделать.
NSTimer
Первый набор в viewDidAppear:
метод для вызова метода animateLabel
с с заданным интервалом времени, как показано ниже:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(animateLabel:) userInfo:nil repeats:YES];
}
Затем определить метод, который получит текст этикетки и сбросить его в новый текст. Этот метод вызывается каждые 0,4 секунды и дает вам эффект шатра, который вы хотите.
- (void)animateLabel:(NSTimer *)timer
{
int labelSize = label.text.length;
label.text = [NSString stringWithFormat:@"%c%@", [label.text characterAtIndex:labelSize - 1], [label.text substringWithRange:NSMakeRange(0, labelSize - 1)]];
}
P.S. : Я не видел такого эффекта выделения на заголовок навигации. Я видел некоторые популярные приложения, где, если ярлык достаточно длинный, чтобы не вписываться в заголовок навигации, они сохраняют его как есть с ...
в конце. Я не говорю, что вы должны сделать то же самое, но просто хотите сказать вам.
EDIT: Для этого справа налево:
- (void)animateLabel:(NSTimer *)timer
{
int labelSize = label.text.length;
label.text = [NSString stringWithFormat:@"%@%c", [label.text substringWithRange:NSMakeRange(1, labelSize - 1)], [label.text characterAtIndex:0]];
}
Вы пытались добавить, что UILabel к UIScrollView? Может быть, вы можете компенсировать scrollBy анимацией? – Konrad77
Я не понял, что сказал – Navi
Вместо инициализации вашего UIBarButtonItem с помощью UIlabel, запустите его с помощью UIScrollView, который имеет UILabel в качестве подзаголовка. – Konrad77