2011-03-09 65 views
1

嘿傢伙,我在這裏遇到了一些麻煩。我有一個使網格顯示的視圖。我的意思是,我有9個項目並設置每行顯示3個。導致3行。沒關係。我沒有理解,這就是爲什麼我總能在他們之間找到空間。有時會出現在線條中間。該空間等於一行高度。Objective-C:邏輯問題

檢查代碼:

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++; 

} 

這是結果應該是:

[] [] []
[] [] []
[] [] []

這就是我得到的:

[] [] []

[] [] []
[] [] []

謝謝大家!

回答

1

linha是1,g是0,使得linha * g 0。對於隨後的行,g是150,使得linha * g == 300的第二次迭代(300在第一跳),在這之後增加了由每次150次。而不是每次都通過有條件地設置g,你應該使它成爲一個常數150,然後要麼使用(linha - 1) * gf值或只是在0

開始linha如果你想看看如何自己發現問題:

  1. 問問自己,這裏怎麼了?

    • 的矩形正在制定一個行過低
    • 這其中矩形繪製後只發生第一行
  2. 那麼我們就來看看這是負責該行:

    thumbItem.frame = CGRectMake(e, f, 231, 140) 
    
  3. 變量f是y座標。這必須是搞砸了。讓我們來看看f是如何定義的:

    f = linha*g; 
    
  4. OK,linha是行號,它只是在循環更換一次不帶任何條件邏輯。所以問題可能是g。讓我們來看看,一個是如何定義的:

    if (linha > 1) { 
        g = 150; 
    } 
    else { 
        g = 0; 
    } 
    
  5. 嘿嘿,第一次迭代後g變化 - 正是當我們的問題出現。。讓我們來看看什麼linha*g值是:

    1 * 0 = 0 
    2 * 150 = 300 (+300) 
    3 * 150 = 450 (+150) 
    4 * 150 = 600 (+150) 
    

啊,哈 - 問題是,在第一次迭代設置g 0打破了格局。

+0

哦,他的工作!我只是沒有看到這一點。非常感謝! – 2011-03-09 02:56:28

+0

+1很好的解釋。 – 2011-03-09 05:17:14