Как загрузить изображения в моем представлении динамически в представлении прокрутки в iPhone - PullRequest
1 голос
/ 30 октября 2010

Я хочу отображать много изображений, таких как миниатюры, в виде прокрутки, и я хочу, чтобы изображения отображались динамически, мы прокручиваем вниз или влево, как ячейки табличного представления

Можете ли вы сказать, как это ...

Спасибо

со следующим кодом ... когда мы прокручиваем представление прокрутки, я вызываю этот код и можем динамически отображать изображения (которые видны только), но проблема заключается в том, что ... при прокрутке с полосами прокрутки я получаю два изображения ... по вертикали и по горизонтали ... это происходит только когда я прокручиваю ... может ли какое-нибудь тело помочь мне? ..

int tileSize;
    int imgSize;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
        tileSize = 255;
        imgSize = 247;
    }else{
        tileSize = 120;
        imgSize = 116;
    }
    CGRect visibleBounds = [songsContainer bounds];
    for (UIView *tile in [songsContainer subviews]) {
        CGRect scaledTileFrame =[tile frame];
        if (! CGRectIntersectsRect(scaledTileFrame, visibleBounds)) {
            for(UIView *view in [tile subviews])
                [view removeFromSuperview];
            [recycledCells addObject:tile];
            [tile removeFromSuperview];
        }
    }
    int maxRow =[songsDict count]-1; // this is the maximum possible row
    int maxCol = noOfRowsInCell-1;  // and the maximum possible column
    int firstNeededRow = MAX(0, floorf(visibleBounds.origin.y / tileSize));
    int firstNeededCol = MAX(0, floorf(visibleBounds.origin.x / tileSize));
    int lastNeededRow  = MIN(maxRow, floorf(CGRectGetMaxY(visibleBounds) / tileSize));
    int lastNeededCol  = MIN(maxCol, floorf(CGRectGetMaxX(visibleBounds) / tileSize));
    NSLog(@".........MaxRow-%d,MaxCol-%d,firstNeddedRow-%d,firstNeededcol-%d,lNR-%d,lNC%d",maxRow, maxCol, firstNeededRow,firstNeededCol,lastNeededRow,lastNeededCol);
    // iterate through needed rows and columns, adding any tiles that are missing
    for (int row = firstNeededRow; row <= lastNeededRow; row++) {
        NSMutableArray *tempArray = (NSMutableArray *)[songsDict objectAtIndex:row];
        for (int col = firstNeededCol; col <= lastNeededCol ; col++) {
            BOOL tileIsMissing = (firstVisibleRow > row || firstVisibleColumn > col || 
                                  lastVisibleRow  < row || lastVisibleColumn  < col);
            if (tileIsMissing) {
                UIView *tile = (UIView *)[self dequeueReusableTile];

                if (!tile) {
                    // the scroll view will handle setting the tile's frame, so we don't have to worry about it
                    tile = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 
                    tile.backgroundColor = [UIColor clearColor];
                }
                //tile.image = image for row and col;
                // set the tile's frame so we insert it at the correct position
                CGRect frame = CGRectMake(tileSize * col, tileSize * row, imgSize, imgSize);
                tile.frame = frame;
                if(col<[tempArray count])
                    [self addContentForTile:tile:row:col];
                else tile.backgroundColor = [UIColor clearColor];
                [songsContainer addSubview:tile];

            }
        }
    }
    firstVisibleRow = firstNeededRow+1; firstVisibleColumn = firstNeededCol+1;
    lastVisibleRow  = lastNeededRow;  lastVisibleColumn  = lastNeededCol;

Ответы [ 2 ]

0 голосов
/ 30 октября 2010

Что вам нужно сделать, это создать свой скролл-вид, как вы хотите. Вы должны решить, хотите ли вы макет сетки или линейный макет. Кроме того, если сетка, вы хотите, чтобы она была привязана к горизонтальным границам, привязана к вертикальной, поэтому она прокручивается либо по вертикали, либо по горизонтали соответственно.

После того, как вы это разобрались, я рекомендую взять архитектуру, аналогичную функционированию представления таблицы. То есть создайте отдельные «ячейки», которые будут содержать ваши миниатюры. Когда у вас есть эти ячейки, вы добавляете их как подпредставления вашего прокрутки с определенными смещениями (вам нужно выполнить некоторые математические операции на плоскостях x / y).

0 голосов
/ 30 октября 2010

Начните с просмотра прокрутки и добавьте каждое изображение в UIImageView в качестве подпредставления к просмотру прокрутки в определенном месте.

Единственное, что нужно иметь в виду, - это хранить в памяти только те изображения, которые отображаются в данный момент, и их непосредственных соседей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...