Frage

Ich habe etwa 50 Bilder von 50 x 50 Pixel Größe jeder. Ich möchte der Benutzer eine von ihnen wählen. Also zuerst dachte ich über eine UITableView, aber das ist einfach nicht das Richtige. Es vergeudet viel Platz auf dem Bildschirm. Anstatt alle unterhalb der anderen Bilder setzen, wäre es besser, ein Raster zu zeigen, von 6 Spalten sagen können und n Zeilen.

würde ich eine UIScrollView verwenden und es füllen sich mit UIView Objekte, das ich so automatisch anordnen, dass sie wie ein Raster erscheinen. Ist das der Weg zu gehen? Oder andere Vorschläge?

War es hilfreich?

Lösung

Ich bin etwas sehr ähnliches in meinem app- tun ein NxN Gitter mit einem Bild unter, und ein anderer subview auf die „Linien“ zu ziehen, die alle von einem UIScrollView gehört. Ich empfehle, die eine separate Ansicht die Bilder zu zeichnen, so etwas wie:

-(void) drawRect(CGRect rect) {
    CGRect smallerRect = CGRectMake(x, y, width, height);
    [yourImage drawRect: smallerRect];
    // repeat as needed to draw the grid
 }

Ein anderes Plakat erwähnt, dass Sie nicht in der Lage sein werden, Touch-Ereignisse zu erhalten, wenn Sie Ihre Ansicht durch eine UIScrollView- dies einfach nicht wahr ist, gehört. Ich habe es zu arbeiten. Sie könnten allerdings die folgenden festlegen müssen:

[yourScrollView setUserInteractionEnabled: YES]
[yourGridView setUserInteractionEnabled: YES]

Andere Tipps

Die three20 Bibliothek eine Klasse hat, das dies tut.

Eine Tabelle Ansicht bedeutet nicht unbedingt pro Zeile ein Bild zeigt, wie Sie vorschlagen. Tabellenzellen können individuell angepasst werden und eine Zellunterklasse mit sechs 50x50 UIImageViews wäre ziemlich einfach. Es ist vielleicht weniger flexibel als eine Scroll-Ansicht aber wenn sechs Bilder pro Zeile Ihr Ziel ist dann eine Tabellenansicht ist der schnellste Weg, um es zu bekommen.

three20 ist schrecklich, ive verwendet es, nicht ich es empfehlen ... Anzeige eines Gitters einfach ...

    - (void) reloadGridView
    {

        scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(5, 54, scrollViewWidth, scrollViewHeight8)];
        scrollView.delegate = self;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.userInteractionEnabled = YES;
        scrollView.scrollEnabled = YES;

        [self.view addSubview:scrollView];


        int x = 10;
        int y = 10;

        divisor = 1;

        for (int i = 0; i < [self.photosArray count]; i++) {

            int buttonTag = divisor;

            UIImage *thumb = [UIImage imageWithContentsOfFile:[self thumbPathAtIndex:i]];
            //********* CREATE A BUTTON HERE **********
            //********* use the thumb as its backgroundImage *******


            if(divisor%4==0){
                y+=70; 
                x = 10;

            }else{
               x += 70;
            }

            divisor++;
        }
        [scrollView setContentSize:CGSizeMake(scrollViewWidth, ([self.photosArray count]%4 == 0) ? y : y+100)];

}

und wenn Sie möchten, 6 Bilder, wenn in der Gegend - Setup ein BOOL für isLandscape

if (isLandscape) {
    //change the divisor to change @ 6 instead of 4
}

, wenn Sie brauchen eine erweiterte Grid Besuche AQGridView (Google it)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top