2011-08-09 4 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]; 
} 

}

비디오의 총 내가 각 행에 4 개 비디오를 표시 한 다음 TED 응용 프로그램처럼 (오른쪽, 다음 행에 대해, 스크롤 뷰가 수평이 될 것입니다 이동하려는 17입니다

). 분명히 4 행 4 행을 표시하고 1 행 1 행을 표시해야합니다. 현재 4 행 3 행, 2 행 1 행을 출력합니다.

무엇?

.

코드를 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를 "if"의 위쪽 부분과 L을 if 부분으로 호출하면이 패턴을 반복합니다. UUUULUUUULUUUULUU 이제 4 번째 U마다 y = 4 * 235 = 940을 왼쪽 위 모서리로 계산합니다 그리고 그것은 아마도 당신의 시야에서 벗어날 것입니다 (예를 들어 네비게이션 바를 가지고 있다면 당신의 시야 높이는 정확히 940 픽셀입니다!). 따라서 4 행은 화면 밖에서 보이지 않습니다. 각 U주기는 768px 너비와 245 높이의보기를 그리므로 수평 줄무늬입니다. 이제 처음 3 개 비디오의 처음 3 개는 처음 3 개 라인을 그리고 4 번째 U는 스크린 밖으로 라인을 그립니다. 그런 다음 "L"은 아무 것도하지 않고 비디오를 건너 뛰고 4 줄의 다음 시퀀스가 ​​245 픽셀 오른쪽으로 이동하도록 "p"를 설정합니다. 줄무늬가 여전히 768 픽셀이므로 버그가있을 수 있습니다. 이 줄무늬는 부분적으로 화면 밖으로 벗어날 것입니다 (오른쪽 테두리를 넘어). 게다가 UUUU의 두 번째 시퀀스 그리기를 시작할 때 기존 UUUU 시퀀스를 덮어 쓰 겠지만 245px 오른쪽으로 이동합니다.

글쎄, 네가하고 싶은게 뭔지 모르지만 그리드에서는 꽤 복잡한 것처럼 보이고 분명히 버그가있다. 이전에 "스 와이프"코드를 처리 한 다음 모든 비디오의 위치를 ​​콘솔에 인쇄하고 디버깅을 시도하여 디버깅 할 수 있습니다. 매개 변수에서 마술 번호를 찾아 수정하지 마십시오.

+0

나는 조금을 명확히하기 위해 스크린 샷을 추가했습니다. http://i53.tinypic.com/15oj687.png – MaikelS

+0

동영상을 표시 할 순서를 설명 할 수 있습니까? (1에서 17까지의 비디오를 그리드에 배치하는 방법은 무엇입니까?). 게다가, 각 ScrollCellViewController의 너비가 768.0이고 왜 겹치는 이유는 무엇입니까? 난 행 당 하나의 수평 ScrollCellViewController (그래서 4 행)을 만들고 난 다음이 scrollers 각 하위 셀로 내 축소판을 추가 할 것입니다. – viggio24

+0

비디오의 순서는 스크린 샷과 같은 순서이며 번호는 매겨졌습니다. ScrollCellViewController는 다른 뷰에서 시작하여이를 만들기 위해 해킹되었지만 기능에는 문제가되지 않습니다. – MaikelS