2012-03-29 9 views
1

Ich muss mehr als eine UIView mit MARQUEE-Effekt wie HTML <marquee> Tag erstellen.How To Create Dynamic mehr als eine uiview mit Marquee-Effekt in iPhone

Ich muss zuerst UIView dynamisch erstellen.

Nach Hinzufügen eines MARQUEE-Effekts für dynamisch erstellte UIView.

Jede Hilfe wird geschätzt.

+0

Zwei Dinge: Ihre Frage ist nicht klar, und was haben Sie versucht? –

+0

Ich versuche, uiview dynamisch zu erstellen und verschieben Sie die uiview einmal horizontal wie HTML-Tag-Tag ohne Wiederholung dynamische uiview ...! – Dinesh

+0

Sie meinen, Sie erstellen mehr als eine Ansicht? Was wird in den Ansichten sein? –

Antwort

1

Meinst du eine Ansicht, die eine Sammlung von Strings anzeigen kann, die breiter sind als die Breite der Ansicht, die durch langsames Scrollen von rechts nach links angezeigt wird? Du müsstest es bauen. Ich habe einmal gemacht, indem ich UIScrollView so unterklassifiziert habe:

// CrawlView.h 

#import <UIKit/UIKit.h> 

@interface CrawlView : UIScrollView 

@property (assign, nonatomic) NSTimeInterval period; 
@property (strong, nonatomic) NSMutableArray *messages; 

- (void)go; 

@end 


// CrawlView.m 

#import "CrawlView.h" 

// distance between neighboring strings. could make this a public property 
#define kPADDING 16.0 

@interface CrawlView() 

@property (assign, nonatomic) CGFloat messagesWidth; 

@end 

@implementation CrawlView 

@synthesize period=_period; 
@synthesize messages=_messages; 
@synthesize messagesWidth=_messagesWidth; 

- (void)buildSubviews { 

    for (UIView *subview in [self subviews]) { 
     if ([subview isKindOfClass:[UILabel self]]) { 
      [subview removeFromSuperview]; 
     } 
    } 

    CGFloat xPos = kPADDING; 

    for (NSString *message in self.messages) { 
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; 
     label.text = message; 
     CGSize size = [message sizeWithFont:label.font]; 
     CGFloat width = size.width + kPADDING; 
     label.frame = CGRectMake(xPos, 0.0, width, self.frame.size.height); 
     [self addSubview:label]; 
     xPos += width; 
    } 
    self.messagesWidth = xPos; 
    self.contentSize = CGSizeMake(xPos, self.frame.size.height); 
    self.contentOffset = CGPointMake(-self.frame.size.width, 0.0); 
} 

- (void)setMessages:(NSMutableArray *)messages { 

    if (_messages != messages) { 
     _messages = messages; 
     [self buildSubviews]; 
    } 
} 

- (void)go { 

    if (!self.period) self.period = self.messagesWidth/100; 
    // so it always takes about the same (fudged, but reasonable) amount of time to scroll the whole array 

    [UIView animateWithDuration:self.period 
          delay:0.0 
         options:UIViewAnimationOptionCurveLinear |UIViewAnimationOptionRepeat 
        animations:^{ 
         self.contentOffset = CGPointMake(self.messagesWidth, 0.0); 
        } completion:^(BOOL finished){}]; 
} 


@end 
+0

Wie Sie diese Funktion verwenden ...!, Und es zeigt Fehler in dieser Zeile - @ Eigenschaft (stark, nicht atomare) NSMutableArray * Nachrichten; Die Fehlermeldung ist unbekannt Eigenschaft stark – Dinesh

+0

Es richtet sich an iOS SDK 5.1 (mit ARC). Kannst du für OS5 bauen? Wenn nicht, können Sie sehen, wie es funktioniert, indem Sie das Starke ändern, um es zu "behalten", aber versenden Sie es nicht so. Es wird Speicher verlieren, wenn Sie zusätzliche Arbeit ausführen. – danh

+0

Nein, ich verwende ios 4.3 SDK – Dinesh