gpt4 book ai didi

ios - 如何防止 cell 的 avplayer - Tableview 重新初始化

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:11:08 24 4
gpt4 key购买 nike

我遇到了一个大问题。我有一个带有视频播放器的 tableview - AVPlayer我有 10 个单元格,每个单元格都在播放视频。但问题是当我滚动 tableview 播放器重新初始化和视频播放开始。我想阻止这种重新初始化并像推特一样播放视频我们最后离开时播放什么代码应该尝试?我已经尝试了多个代码但没有成功

    Code is here

if (Arr_avPlayer.count > indexPath.row){
Cell_TVC * cell = (Cell_TVC *)[Arr_avPlayer
objectAtIndex:indexPath.row];
return cell;
}

// Cell_TVC *cell = (Cell_TVC *)[tableView
dequeueReusableCellWithIdentifier:@"Cell_TVC"
forIndexPath:indexPath];

**Cell_TVC *cell = [[Cell_TVC alloc] init];**

// Cell_TVC *cell = [tableView

dequeueReusableCellWithIdentifier:@"Cell_TVC"];
// if (!cell) {
// cell = [[Cell_TVC

alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"Cell_TVC"];
//
// }



AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL
fileURLWithPath:[self filepath:[myIntegers
objectAtIndex:indexPath.row]]] options:nil];

cell.avPlayerItem = [[AVPlayerItem alloc] initWithAsset:asset];
cell.avPlayer = [[AVPlayer alloc]
initWithPlayerItem:cell.avPlayerItem];

cell.avPlayerLayer = [[AVPlayerLayer alloc] init];
cell.avPlayerLayer = [AVPlayerLayer
playerLayerWithPlayer:cell.avPlayer];
cell.lblTime.text = @"0.0";

CGRect contentViewFrame = cell.contentView.frame;
contentViewFrame.origin.x = 0;
contentViewFrame.origin.y = 25;
contentViewFrame.size.width = APP_width;
contentViewFrame.size.height = APP_width * 0.55;
cell.contentView.frame = contentViewFrame;
cell.contentView.backgroundColor = [UIColor redColor];

UILabel *lbl = [[UILabel
alloc]initWithFrame:CGRectMake((cell.contentView.frame.size.width / 2
) - 100, contentViewFrame.size.height + 10, 200, 100)];

//lbl.text = [NSString stringWithFormat:@"%02f:%02f", dMinutes11,
dSeconds11];

lbl.tag = indexPath.row;

[cell.avPlayerLayer setFrame:cell.contentView.frame];
[cell.contentView.layer addSublayer:cell.avPlayerLayer];

[Arr_avPlayer insertObject:cell atIndex:indexPath.row];
[cell.contentView addSubview:lbl];


if i write the cell like below

Cell_TVC *cell = [[Cell_TVC alloc] init];

i am not able to acess the property of cell and when i use like
below

if (!cell)
{
cell = [[Cell_TVC
alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"Cell_TVC"];

}

播放器索引改变和视频获取改变它的索引如何解决这个问题?

最佳答案

如果你使用的是 UItableview,它的行为很明显。 UItableview 不会将所有单元格保存在内存中。当单元格从屏幕上消失时,tableview 会删除它并在您向下/向上滚动时再次添加它(当新单元格出现在屏幕上时)。您无法更改 UItableview 的这种行为。

有一个丑陋的解决方案:将您的 tableview 调整为 height = HeightOfCell * numberOfCell。 但不建议这样做。因为这可能会造成内存问题。

更好的解决方案是跟踪寻道时间。您可以使用 didEndDisplayingCell将播放器的当前寻道时间值存储在将要删除的单元格中。当该索引路径的单元格再次出现时 (cellforrow),您可以寻找玩家以存储值(value)。

关于ios - 如何防止 cell 的 avplayer - Tableview 重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43518825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com