Показать сетку просмотра видео - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь отобразить вид сетки в портретном и горизонтальном виде iPad.Прямо сейчас я просто пытаюсь сделать это на портретном изображении, так что вы увидите соответствующие X, Y в следующем коде, где я застрял.

- (void)renderPlaylist {
cellsArray = [[NSMutableArray alloc] init];
CGFloat xPos = 0.0f;
CGFloat yPos = 0.0f;
int i = 4;
int y = 1;
int p = 1;

for (BCVideo *video in [[self playlist] videos]) {

if (i > 0) {  
    ScrollCellViewController *cell = [[ScrollCellViewController alloc] initWithBCVideo:video];
    [cell setDelegate:self];
    [[cell view] setFrame:CGRectMake(xPos, yPos, 768.0f, 245.0f)];

    [scrollView addSubview:[cell view]];
    [cellsArray addObject:cell];
    yPos = y * 235.0f;
    y++;
    i--;
}else{
    i = 4;
    xPos = p * 245.0f;
    yPos = 0.0f;
    y = 1;
    p++; 
}
    //blabla lazy
    CGSize size = CGSizeMake(2000.0f, 2000.0f);
    [scrollView setContentSize:size];
}

}

Всего видео - 17. Я хочу отобразить 4 видео в каждой строке, а затем переместиться вправо, для следующей строки вид прокрутки будет горизонтальным (как приложение TED).Очевидно, что необходимо отобразить четыре строки по 4, а затем одну строку из 1. В настоящее время выводятся 3 строки по 4, а затем 1 из 2. Всего 14?

что?

точно.

Если я настрою код для строк из 5, вы получите в общей сложности 15 видео.Если я просто код для строк из 6, вы получите в общей сложности 16 видео.

Снимок экрана http://i53.tinypic.com/15oj687.png

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Решение:

- (void)renderPlaylist {
cellsArray = [[NSMutableArray alloc] init];
CGFloat xPos = 0.0f;
CGFloat yPos = 0.0f;

// y => counter for position of vertical videos
int y = -1;
// p => number of rows
int p = 0;
// r => check 
int r = 0;

for (BCVideo *video in [[self playlist] videos]) {
    r++;
// vertical rows
if (y < 3) {  
    y++;      
    yPos = y * 200.0f;
}else{
    // move sideways to the right one row, and reset the vertical row 
    p++;
    xPos = p * 255.0f;
    yPos = 0.0f;
    y = 0;
}
    //print video
    ScrollCellViewController *cell = [[ScrollCellViewController alloc] initWithBCVideo:video];
    [cell setDelegate:self];
    [[cell view] setFrame:CGRectMake(xPos, yPos, 255.0f, 210.0f)];

    [scrollView addSubview:[cell view]];
    [cellsArray addObject:cell];
    CGSize size = CGSizeMake(xPos + 250.0f, 1024.0f);
    [scrollView setContentSize:size];
} 
}
0 голосов
/ 09 августа 2011

Ваш код неверен в нескольких частях.Следуя ему и вызывая U верхнюю часть «if» и L нижнюю часть if, вы повторяете этот шаблон: UUUULUUUULUUUULUU Теперь каждый четвертый U вы вычисляете y = 4 * 235 = 940 как верхний левый угол, и этовероятно, вне вашего поля зрения (например, если у вас есть панель навигации, высота вашего вида будет ровно 940 пикселей в высоту!).Так что 4-й ряд не виден, потому что вне экранаКроме того, каждый цикл U рисует вид шириной 768 пикселей и высотой 245, так что это горизонтальная полоса.Теперь первые 3 Us из первых трех видеороликов рисуют первые три линии, а 4-й U рисует линию вне экрана.Затем буква «L» ничего не делает, она пропускает видео (sic!) И устанавливает «p» таким образом, что следующая последовательность из 4 полос будет смещена на 245 пикселей вправо, что, вероятно, глючит, поскольку полосы все еще имеют ширину 768 пикселей, поэтому следующаяциклы эти полосы будут частично вне экрана (за правую границу).Кроме того, когда вы начнете рисовать вторую последовательность UUUU, вы перезапишете их поверх существующих, но сместитесь на 245 пикселей вправо.

Ну, я не знаю, что вы хотите сделать, но это кажется довольно сложным для сетки и очевидно глючит.Вы должны позаботиться о своем «смахивании» кода, а затем отладить его, напечатав в консоли положение всех ваших видео и попытаться отладить его.Не пытайтесь исправить это, ища магические числа в параметрах.

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