2016-09-07 1 views
0

Я создал слайдер в своем приложении. Как добавить цикл в мой код. Потому что мой текст ярлыка слайд только один раз, но я хочу, чтобы на этикетке текст повторить (цикл) на этикетке. Как это возможно?Как создать текст слайдера текста

Мой слайдер этикетки код

Сделать globalCounter в качестве глобальной переменной

globalCounter=0; 
if(nameArray.count>0){ 

[self changeLable]; 

} 

Тогда

-(void)changeLable{ 

if(!(globalCounter<nameArray.count)){ 
    return; 
} 


NSLog(@"globalCounter %d",globalCounter); 

[UIView animateWithDuration:1 
         delay:0.5 
        options: UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 


       } 
       completion:^(BOOL finished) { 

        [lblTitle setText:[nameArray objectAtIndex:globalCounter]]; 
        globalCounter++; 

        [self performSelector:@selector(changeLable) withObject:nil afterDelay:1]; 

       }]; 


} 

Редактировать

-(void)changeLable{ 

if(!(globalCounter<nameArray.count)){ 
globalCounter=0; 
    } 


NSLog(@"globalCounter %d",globalCounter); 

[UIView animateWithDuration:1 
         delay:0.5 
        options: UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 


       } 
       completion:^(BOOL finished) { 

        [lblTitle setText:[nameArray objectAtIndex:globalCounter]]; 
        globalCounter++; 

        [self performSelector:@selector(changeLable) withObject:nil afterDelay:1]; 

       }]; 


} 
+0

использование веб-вид вместо метки и применить шатра эффект текста с помощью HTML синтаксис –

+0

Использование [MarqueeLabel] (https://github.com/cbpowell/MarqueeLabel) – pkc456

+0

http://stackoverflow.com/questions/22397122/how-to-move-text-from-right-to-left-in-ios-programatically/22397613 # 22397613 –

ответ

1

сделать как

globalCounter=0; 
if(des.count>0){ 
    [_label setText:[des objectAtIndex:globalCounter]]; 
    [self changeLable]; 

} 

и вызвать метод, как

-(void)changeLable{ 

if(globalCounter < des.count){ 



[UIView animateWithDuration:0. 
         delay:0.5 
        options: UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 


       } 
       completion:^(BOOL finished) { 

        if(globalCounter>=des.count){ 
         globalCounter=0;//set counter to zero after it exceeds array count to repeat text change round repeated 
        }else 
        { 
          [_label setText:[des objectAtIndex:globalCounter]]; 
         globalCounter++; 
         [self performSelector:@selector(changeLable) withObject:nil afterDelay:1]; 
        } 




       }]; 
} 


} 
+0

проверить обновленный ответ –

+0

ваша проблема решена или нет –

0

Попробуйте ниже код, он может помочь:

-(void)changeLable{ 

NSLog(@"globalCounter %d",globalCounter); 

[UIView animateWithDuration:1 
         delay:0.5 
        options: UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 

        [lblTitle setText:[nameArray objectAtIndex:globalCounter]]; 
       } 
       completion:^(BOOL finished) { 

        if(globalCounter>nameArray.count)){ 

         globalCounter=0;//set counter to zero after it exceeds array count to repeat text change round repeated 

        }else{ 

         globalCounter++; 

        } 

        [self performSelector:@selector(changeLable) withObject:nil afterDelay:1]; 

       }]; 

} 
+0

Я использую ваш код, но массив первый раунд завершен после сбоя моего сообщения об ошибке ниже: - - [__ NSArrayI objectAtIndex:]: индекс 2 за пределами границ [0 .. 1] ' –

+0

Ошибка. Я пробовал ваш код сейчас, и он разбился. Затянутое приложение из-за uncau ght exception 'NSRangeException', причина: '*** - [__ NSArrayM objectAtIndex:]: индекс 4 за пределами границ [0 .. 3]' – user3182143

+0

ankur ваш код работает отлично man.it вызывает все объекты массива. – user3182143

0

Это мой ответ brother.Sorry я не мог ответить сразу же, как я имел некоторые work.I скачал и побежал ваш project.First он сбой, когда вы обрабатывали неправильный счетчик массивов. Поэтому он ограничивает массив. После этого я устанавливаю условие внутри черного.

-(void)changeLable 
{ 

    NSLog(@"globalCounter %d",globalCounter); 

    [UIView animateWithDuration:1 
         delay:0.5 
        options: UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 

       } 
       completion:^(BOOL finished) 
       { 
        if(globalCounter<des.count) 
        { 
         _label.text = @""; 
         [_label setText:[des objectAtIndex:globalCounter]]; 
         globalCounter++; 
        } 
        else 
         globalCounter=0; 
        [self performSelector:@selector(changeLable) withObject:nil afterDelay:1]; 
      }]; 
} 

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

  • Нет связанных вопросов^_^