检查代码:
NSInteger quantidadeDeVideos = [self.videosURL count];
NSInteger contadorDeVideos = 0;
NSInteger idLinha = 0;
NSInteger linha = 1;
NSInteger itemq = 0;
while (contadorDeVideos < quantidadeDeVideos) {
float f;
float g;
// Set the lines
if (itemq < 3) {
itemq++;
}
else {
itemq = 1;
linha++;
}
// This makes the second line multiplies for 150;
if (linha > 1) {
g = 150;
}
else {
g = 0;
}
// Ignore this, this is foi make 1,2,3. Making space between the itens.
if (idLinha > 2) {
idLinha = 0;
}
NSLog(@"%i", foi);
float e = idLinha*250+15;
f = linha*g;
UIImageView *thumbItem = [[UIImageView alloc] init];
thumbItem.frame = CGRectMake(e, f, 231, 140);
UIColor *bkgColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"VideosItemBackground.png"]];
thumbItem.backgroundColor = bkgColor;
thumbItem.opaque = NO;
[self.videosScroll addSubview:thumbItem];
contadorDeVideos++;
idLinha++;
}
结果应该是:
[] [] []
[] [] []
[] [] []
这就是我得到的:
[] [] []
[] [] []
[] [] []
谢谢大家!
答案 0 :(得分:1)
当linha
为1时,g
为0,使linha * g
为0.对于后续行,g
为150,使linha * g
== 300对于第二次迭代(第一次跳过300次),之后每次增加150次。您不应每次都有条件地设置g
,而应该将其设为常数150,然后使用(linha - 1) * g
作为f
的值,或者只需将linha
设置为0。
如果您想了解如何自己发现问题:
问问自己,这里出了什么问题?
因此,我们查看负责绘制矩形的位置的行:
thumbItem.frame = CGRectMake(e, f, 231, 140)
变量f
是y坐标。这必须是搞砸了。我们来看看如何定义f
:
f = linha*g;
好的,linha
是行号,它只在循环中更改一次,没有任何条件逻辑。所以问题可能是g
。让我们看看如何定义:
if (linha > 1) {
g = 150;
}
else {
g = 0;
}
嘿,g
在第一次迭代后发生了变化 - 正是在我们的问题出现时。让我们看看linha*g
的值是什么:
1 * 0 = 0
2 * 150 = 300 (+300)
3 * 150 = 450 (+150)
4 * 150 = 600 (+150)
啊哈 - 问题是在第一次迭代时将g
设置为0会破坏模式。