2016-09-07 3 views
0

Ich habe Slider in meiner App erstellt. Wie man Schleife in meinem Code hinzufügt. Weil mein Etikett Text nur einmal rutscht, aber ich möchte Text wiederholen (Schleife) auf dem Etikett. Wie es möglich ist?Wie erstelle ich Etiketten-Schieberegler

My Label Schieber Code

globalCounter Stellen als globale Variable

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

[self changeLable]; 

} 

Dann

-(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]; 

       }]; 


} 

bearbeiten

-(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

Verwendung Web-Ansicht statt Etikett und anwenden Marquee Effekt auf Ihren Text mit HTML-Syntax –

+0

Verwenden [MarqueeLabel] (https://github.com/cbpowell/MarqueeLabel) – pkc456

+0

http://stackoverflow.com/questions/22397122/how-to-move-Text-von-rechts nach-links-in-ios-programmatisch/22397613 # 22397613 –

Antwort

1

tun wie

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

} 

und rufen Methode wie

-(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

Überprüfen Sie die aktualisierte Antwort –

+0

Ihr Problem ist gelöst oder nicht –

0

Code unten versuchen, kann es helfen:

-(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

Ich benutze Ihren Code aber Array erste Runde nach dem Absturz meiner App Fehler unten gezeigt: - - [__ NSArrayI objectAtIndex:]: Index 2 jenseits Grenzen [0 .. 1] ' –

+0

Error.Ich habe versucht, Ihren Code jetzt und es stürzte.Abschliessen App wegen uncau ght Ausnahme 'NSRangeException', Grund: '*** - [__ NSArrayM objectAtIndex:]: Index 4 über Grenzen [0 .. 3]' – user3182143

+0

ankur Ihr Code funktioniert gut man.it ruft alle Array-Objekte auf. – user3182143

0

Dies ist meine Antwort brother.Sorry Ich konnte nicht sofort antworten, da ich einige work.I heruntergeladen hatte und lief Ihre project.First es stürzt ab, wie Sie die falsche Array-Anzahl behandelt.So grenzt es das Array.Nachdem setze ich die Bedingung in den schwarzen.

-(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]; 
      }]; 
}