2011-01-16 4 views
0

Ich füge Unteransichten zu einer UIScrollView hinzu, (die eine UIVewController sind), und sie bilden kein 2 x 2 Raster, wie sie angenommen werden. Hier ist ein Teil des Codes, den ich verwende:Hinzufügen von Unteransichten in UIScrollView in einem Raster

-(void)layoutSubviews{ 

    BOOL blurbsHaveBorder = YES; 

    int blurbCount = 3; 
    int blurbsPerRow; 

    int viewWidth = gridView.bounds.size.width; 
    int viewHeight = gridView.bounds.size.height; 

    int blurbWidth = 320; 
    int blurbHeight = 320; 

    int spaceWidth = round((viewWidth -blurbWidth * blurbsPerRow)/(blurbsPerRow + 1)); 
    int spaceHeight = spaceWidth; 

    int rowCount = ceil(blurbCount/(float)blurbsPerRow); 
    int rowHeight = blurbHeight + spaceHeight; 


    if (blurbsPerRow < 1) blurbsPerRow = 1; 


    NSInteger rowsPerView = viewHeight/rowHeight; 
    NSInteger topRow = gridView.contentOffset.y/rowHeight; 
    NSInteger bottomRow = topRow + rowsPerView; 

    NSInteger startAtIndex = topRow * blurbsPerRow; 
    NSInteger stopAtIndex = (bottomRow * blurbsPerRow) + blurbsPerRow; 
    if (stopAtIndex > blurbCount) stopAtIndex = blurbCount; 

    int x = spaceWidth; 
    int y = spaceHeight + (topRow * rowHeight); 

    int i; 
    /* add new subviews. */ 
    for (int i = startAtIndex; i < stopAtIndex; i++) { 
     if (i >= 0) { 

      blurbItem = [[BlurbItem alloc] initWithFrame:CGRectMake(5,5,blurbWidth,blurbHeight) 
              andHasBorder:blurbsHaveBorder]; 

      [gridView addSubview:blurbItem.view]; 
      [blurbItem release]; 
     } 

    } 

    /* adjust the position. */ 
    if ((i+1) % blurbsPerRow == 0) { 
     /* start new row. */ 
     x = spaceWidth; 
     y += blurbHeight + spaceHeight; 
    } else { 
     x += blurbWidth + spaceWidth; 
    } 
} 

Antwort

0

Ich lese das richtig? Es sieht so aus, als würden Sie nicht blurbsPerRow einstellen. Wäre das standardmäßig 0?

+0

Ja, der Standardwert wäre 0. – WrightsCS

+0

Ich bin überrascht, dass Sie keine Division durch Null Fehler bekommen. Außerdem verwenden Sie es, ohne es vorher zu initialisieren. – donkim

Verwandte Themen