我正在製作基本的音樂流。在視圖控制器(PlayerViewController)中,我有一個帶有自定義UITableViewCell的UITableView(稱爲MediaItemTableViewCell)。在函數cellForRowAtIndexPath中,添加有關當前流式音樂曲目的元數據,並在單元格是當前正在播放的歌曲時添加動畫。這一切正常工作,並添加動畫。用戶滾動UITableView後UITableViewCell動畫消失
問題是,如果用戶滾動UITableView,則動畫消失。我追蹤了我編寫的代碼,並使用斷點和NSLog來驗證我的變量在每一步都是正確的。如果我始終將其設置爲每個單元格(如在if塊外設置動畫),則動畫甚至會在滾動後消失。
在我的代碼中有什麼問題或iOS中沒有看到什麼?
MediaItemTableViewCell:
@interface MediaItemTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *track_title;
@property (weak, nonatomic) IBOutlet UILabel *artist;
@property (weak, nonatomic) IBOutlet UILabel *duration;
@property (weak, nonatomic) IBOutlet UIImageView *sc_album_image;
@property (weak, nonatomic) IBOutlet UIImageView *playing_animation;
@end
我PlayerViewController的的cellForRowAtIndexPath:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MediaItemTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
MediaItem *track = [self.playlist objectAtIndex:indexPath.row];
_playListTableView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
cell.track_title.text = track.track_title;
cell.artist.text = track.artist;
cell.duration.text = track.duration;
cell.sc_album_image.image = track.artwork;
cell.backgroundColor = [UIColor clearColor];
if((int)_current_track_index == (int)indexPath.row && _player.isPlaying)
{
cell.playing_animation.image = [UIImage animatedImageNamed:@"wave" duration:0.6f];
}
return cell;
}
是否執行了if語句?你能在那裏放一個斷點嗎? – atreat
依靠數據而不是indexPath,它可能會改變,最好是在自定義類中添加一個屬性,該屬性將包含MediaItem,並觸發您的動畫邏輯。 – iphonic
在哪裏/如何設置_current_track_index? – rmp