gpt4 book ai didi

objective-c - 全屏 : AVPlayerLayer is not resized when resizing its parent view

转载 作者:太空狗 更新时间:2023-10-30 03:17:36 27 4
gpt4 key购买 nike

我正在 MonoTouch 中使用来自 AV Foundation 的 AVPlayer API 开发视频播放器(但 objective-c 中的解决方案也可能不错)。我正在尝试实现全屏模式。

为了显示视频帧,我有一个 UIView(我们称之为回放 View ),我在其中添加了 AVPlayerLayer 作为回放 View 层的 subview :

UIView *playbackView = ...
AVPlayerLayer *playerLayer = ...
[playbackView.layer addSublayer:playerLayer];

图层属性设置如下:

playerLayer.needsDisplayOnBoundsChange = YES;
playbackView.layer.needsDisplayOnBoundsChange = YES;

确保在播放 View 大小更改时调整它们的大小。最初,播放 View 的坐标为 (0, 0, 320, 180)(仅显示在 UI 的顶部)。然后,我通过将播放 View 帧大小设置为窗口大小来制作全屏动画:

playbackView.frame = playbackView.window.bounds;

它工作正常。回放 View 现在填满了所有窗口(设置背景颜色以查看它)。但是我的 AVPlayerLayer 仍然像以前在非全屏模式下一样停留在 View 的顶部。

为什么 AVPlayer 层没有根据播放 View 的新大小调整大小?我还需要在 AVPlayerLayer 上制作动画吗?使用 setNeedsLayout、layoutSubviews 进行刷新(它似乎并没有改变什么……)?删除 AVPlayerLayer 并重新添加?

最佳答案

不要添加为子层。只需将 playbackView 的图层用作 AVPlayerLayer,如下所示:

+ (Class)layerClass {
return [AVPlayerLayer class];
}
- (AVPlayer*)player {
return [(AVPlayerLayer *)[self layer] player];
}
- (void)setPlayer:(AVPlayer *)player {
[(AVPlayerLayer *)[self layer] setPlayer:player];
}

参见 AV Foundation Programming Guide - 播放器 View

关于objective-c - 全屏 : AVPlayerLayer is not resized when resizing its parent view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497753/

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