我正在尝试在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个视频。
答案 0 :(得分:0)
您的代码在几个部分中是错误的。 通过跟随它并调用U“if”的上半部分和L的if部分的下半部分,你重复这个模式: UUUULUUUULUUUULUU 现在每隔4个U你计算y = 4 * 235 = 940作为左上角,它可能超出你的视野(例如,如果你有一个导航栏,你的视图高度将正好是940像素的高度!)。所以第四行是不可见的,因为屏幕外。 除了每个U循环外,还绘制一个宽768px,高245的视图,因此它是一个水平条纹。现在前三个视频中的前3个US画出了前三行,第四个U画出了画面线。然后“L”什么都不做,它会跳过视频(原文如此!)并设置“p”,这样4个条纹的下一个序列将向右移动245px,这可能是错误的,因为条纹仍然是768px宽,所以下一个循环这些条纹将部分在屏幕外(在右边框上)。此外,当您开始绘制UUUU的第二个序列时,您将覆盖现有的UUUU,但向右移动245px。
嗯,我不知道你想做什么,但对于一个网格而言似乎相当复杂,而且它显然是错误的。您应该先处理“刷卡”代码,然后通过在控制台中打印所有视频的位置并尝试调试它来调试它。不要试图通过在参数中查找幻数来修复它。
答案 1 :(得分: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];
}
}