gpt4 book ai didi

ios - AVPlayerLayer 仅在边界更改时正确设置

转载 作者:行者123 更新时间:2023-11-28 21:30:28 25 4
gpt4 key购买 nike

我有一个奇怪的问题。我有一个表格 View ,它的单元格包含一个视频。我将 AVPlayerLayer 设置为拉伸(stretch)到单元格的大小,但是当 tableview 首次加载时,它不会这样做,只有前 2 个单元格。对于单元格 3 +,它加载正确,当我从底部向上滚动表格 View 时,单元格确实为前 2 个正确加载。我创建了一个 13 秒的 youtube 视频来准确显示我的意思。请注意视频前几秒前 2 个单元格底部的空白区域。当我向上滚动时,那个空间不存在,AVPlayerLayer 的边界是正确的。

https://www.youtube.com/watch?v=q7BlZd77QVU

这是我在 cellForRowAtIndexPath 中设置 tableView 单元格的代码:

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *mov = @".mov";
NSString *fullComponent = [NSString stringWithFormat: @"%@%@", self.videoChallengeID, mov];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:fullComponent];
NSURL *url = [NSURL fileURLWithPath:fullPath];

UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, videoCell.frame.size.width, videoCell.frame.size.height)];
blueView.backgroundColor = [UIColor blueColor];
[videoCell.contentView insertSubview:blueView belowSubview:videoCell.bottomView];
videoCell.item = [AVPlayerItem playerItemWithURL:url];
self.player = [[AVPlayer alloc] initWithPlayerItem:videoCell.item];
[self.player setMuted:YES];
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
playerLayer.frame = CGRectMake(0, 0, videoCell.frame.size.width, videoCell.frame.size.height);
playerLayer.backgroundColor = [UIColor lightGrayColor].CGColor;
playerLayer.videoGravity = AVLayerVideoGravityResize;
[blueView.layer addSublayer:playerLayer];
[self.player play];

我清楚地正确设置了框架,并且它有效,除了加载的前 2 个单元格,第一次加载 tableview。每隔一段时间它就可以正常工作。知道会发生什么吗?

最佳答案

因为第一次实例化单元格时,单元格本身的框架没有设置为它应该的样子。当它们被重用时,没问题,但当它们第一次被实例化时就不行了。

你应该做的是创建一个自定义的 UItableViewCell 子类,然后在 layoutSubviews 函数中适本地设置视频层的框架

关于ios - AVPlayerLayer 仅在边界更改时正确设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308116/

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