Добавление подпредставлений в UIScrollView в виде сетки - PullRequest
0 голосов
/ 16 января 2011

Я добавляю подпредставления к UIScrollView (которые являются UIVewController), и они не образуют сетку 2 x 2, как они предполагают.Вот часть кода, который я использую:

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

1 Ответ

0 голосов
/ 16 января 2011

Я правильно понял?Похоже, вы не устанавливаете blurbsPerRow.Будет ли это сделать по умолчанию 0?

...