2011-08-09 172 views
1

我試圖在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行4行,然後顯示1行。這樣當前輸出3行4行,然後是2行1行。總共14行?

什麼?

正好。

如果我將代碼調整爲5行,總共可以獲得15個視頻。如果我只是6行的代碼,你總共得到16個視頻。

截圖http://i53.tinypic.com/15oj687.png

回答

0

解決方案:

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

事情是,我只在If()聲明和幾次打印視頻,如果不適用,所以視頻沒有打印!這很簡單。 – MaikelS

0

你的代碼是錯誤的幾個部分。 通過跟隨它,並調用U的上部的「如果」和L的下半部分,你重複這種模式: UUUULUUUULUUUUUUU 現在每隔4你計算y = 4 * 235 = 940作爲左上角它可能超出了你的視野(例如,如果你有一個導航欄,你的視圖高度將正好是940像素的高度!)。因此,第四行因爲屏幕外而不可見。 除了每個U循環畫一個768像素寬和245高的視圖,所以它是一個水平條紋。現在前三部影片中的前三部分畫出了前三部,第四部則畫出了畫面。然後,「L」什麼都不做,它跳過視頻(原文!)並設置「p」,使得下一個4條紋序列向右移動245px,這可能是錯誤的,因爲條紋仍然是768px寬,所以下一個週期這些條紋將部分超出屏幕(在右邊界)。除此之外,當你開始繪製UUUU的第二個序列時,你將覆蓋現有的序列,但向右移動245px。

嗯,我不知道你想要做什麼,但它似乎相當複雜的網格,它顯然是越野車。您應該先照顧您的「滑動」代碼,然後通過在控制檯中打印所有視頻的位置並嘗試進行調試,從而進行調試。不要試圖通過在參數中查找幻數來修復它。

+0

我添加了一個屏幕截圖澄清了一點。 http://i53.tinypic.com/15oj687.png – MaikelS

+0

你能解釋一下你想要顯示視頻的順序嗎? (那麼應該如何將1到17的視頻放入網格?)。此外,爲什麼每個ScrollCellViewController的寬度爲768.0,並且你重疊?我會爲每行創建一個水平的ScrollCellViewController(如此4行),然後我會將這些縮略圖添加爲每個滾動條內的子單元。 – viggio24

+0

視頻的順序是在屏幕截圖中看到的順序,我爲它們編號。 ScrollCellViewController起源於另一個視圖,並被破解創建它,這對功能無關緊要。 – MaikelS