2014-05-15 186 views
0

我試圖在「表格視圖單元格」中動畫UIImageview,但圖片從不顯示。 這是我正在嘗試使用的代碼。爲表格視圖單元格Animate UIImageView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; 
     cell.textLabel.font = [UIFont systemFontOfSize:16.0]; 
    } 

    if (cell) 
    { 
     cell.textLabel.text = [titleArray objectAtIndex:indexPath.row]; 
     cell.textLabel.textColor = [UIColor darkGrayColor]; 

     UIImage *musicOne = [UIImage imageNamed:@"music1.png"]; 
     UIImage *musicTwo = [UIImage imageNamed:@"music2.png"]; 
     UIImage *musicThree = [UIImage imageNamed:@"music3.png"]; 

     NSArray *imagesArray = [NSArray arrayWithObjects:musicOne, musicTwo, musicThree, nil]; 

     if (indexPath.row == 0) 
     { 
      cell.imageView.animationImages = imagesArray; 
      cell.imageView.animationDuration = 1.0f; 
      cell.imageView.animationRepeatCount = 0; 
      [cell.imageView startAnimating]; 
     } 
    } 

    return cell; 
} 

的圖像顯示在單元格,如果我不嘗試做動畫與多個圖像,只需使用一個圖像中的圖像視圖。

cell.imageView.image = [imagesArray objectAtIndex:0]; 
+0

當你運行該代碼?那麼圖像視圖實際上是否存在? – Wain

+0

@wain我已更新問題以顯示整個方法。 – raginggoat

+0

它自己的代碼看起來很合理。嘗試將圖像視圖放置在表視圖的頂部並運行完全相同的代碼,看看它是否有效。 –

回答

0

嘗試給ImageView的標籤(例如1),然後得到這樣的圖像視圖:

UIImage *musicOne = [UIImage imageNamed:@"music1.png"]; 
    UIImage *musicTwo = [UIImage imageNamed:@"music2.png"]; 
    UIImage *musicThree = [UIImage imageNamed:@"music3.png"]; 

    NSArray *imagesArray = [NSArray arrayWithObjects:musicOne, musicTwo, musicThree, nil]; 

    if (indexPath.row == 0) 
    { 
     UIImageView *imageView = (UIImageView *)[cell viewWithTag:1]; 
     imageView.animationImages = imagesArray; 
     imageView.animationDuration = 1.0f; 
     imageView.animationRepeatCount = 0; 
     [imageView startAnimating]; 
    } 
+0

這不能解決它。 – raginggoat

0

這完全相同的代碼爲我工作。我知道在UIScrollView視圖滾動時動畫將停止,因此您應該使用CADisplayLinkNSRunLoopCommonModes上運行動畫,而不是在NSDefaultRunLoopMode上運行,但我已測試過您的代碼並且它已正常工作。

3

有必要設置imagecell.imageView的屬性也一起animationImages,否則UITableViewCell什麼都不會顯示。

爲了提高應用程序性能和節省內存做以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    cell.imageView.image = [UIImage imageNamed:@"music1.png"]; 
    return cell; 
} 

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    UIImage *musicOne = [UIImage imageNamed:@"music1.png"]; 
    UIImage *musicTwo = [UIImage imageNamed:@"music2.png"]; 
    UIImage *musicThree = [UIImage imageNamed:@"music3.png"]; 
    NSArray *imagesArray = @[musicOne, musicTwo, musicThree]; 

    [cell.imageView setAnimationImages:imagesArray]; 
    cell.imageView.animationDuration = 1.0f; 
    [cell.imageView startAnimating]; 
} 

-(void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [cell.imageView stopAnimating]; 
    [cell.layer removeAllAnimations]; 
} 
相關問題