2011-01-16 16 views
0

UIScrollView(サブタイトル:UIVewController)にサブビューを追加していて、それらが想定しているように2 x 2グリッドを形成していません。ここに私が使用しているコードの一部があります:UIScrollViewのサブビューをグリッドパターンで追加する

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

答えて

0

私はこの権利をお読みになりますか? blurbsPerRowを設定していないようです。それは0にデフォルトにするでしょうか?

+0

はい、デフォルトは0になります。 – WrightsCS

+0

私はゼロによる除算が得られていないのに驚いています。さらに、最初に初期化せずに使用しています。 – donkim

関連する問題