gpt4 book ai didi

ios - 如何使 AVPlayer 随父 View 调整大小?

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

我已经按照 Apple 文档中的建议创建了一个 AVPlayerView: https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

所以我将 UIView 子类添加为我的 UIViewController 的 subview 。

看起来不错,视频播放效果很好。但是,当我将 View 最小化为一个小窗口时,视频不会随之调整大小。没关系,当我使用 MPMoviePlayerViewController 时,但出于一些原因我需要使用 AVPlayer [静音音频,同时播放多个视频等]。

这是我的 AVPlayerView 实现:

@implementation VideoView {

}

+ (Class)layerClass {
return [AVPlayerLayer class];
}

- (AVPlayer*)player {
return [(AVPlayerLayer *)[self layer] player];
}

- (void)setPlayer:(AVPlayer *)player {
[(AVPlayerLayer *)[self layer] setPlayer:player];
}

@end

下面是我创建 AVPlayer 的方法:

    AVAsset *asset = [AVURLAsset URLAssetWithURL:Url options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];
player_vc = [AVPlayer playerWithPlayerItem:anItem];
player_vc.actionAtItemEnd = AVPlayerActionAtItemEndNone;

player_layer = [[VideoView alloc] initWithFrame:self.view.bounds];
[self.view addSubview: player_layer];

[player_layer setPlayer:player_vc];

下面是我用来更改父 View 框架的代码:

-(void) minimize {
[UIView animateWithDuration:2.0
animations:^{
self.view.frame = resizeFrame;
} completion:(void (^)(BOOL)) ^{
self.minimized = true;

}

似乎一旦创建了特定的框架,我就无法将其更改为其他内容。

你能告诉我如何使 AVPlayer 层随我的 View Controller 的 View 调整大小吗?

谢谢

最佳答案

AVPlayerLayers 不会根据其父 View 自动调整大小。如果您要用 AVPlayerLayer 覆盖 UIView 的 layerClass,您还应该像这样覆盖它的 layoutSublayersOfLayer 方法:

- (void)layoutSublayersOfLayer:(CALayer *)layer {
[super layoutSublayersOfLayer:layer];
if (layer == self.layer) {
[self layer].frame = self.bounds;
}
}

在 Swift 3 中:

class PlayerLayerDisplayer: UIView {

override class var layerClass: AnyClass {
get {
return AVPlayerLayer.self
}
}

override func layoutSublayers(of layer: CALayer) {
super.layoutSublayers(of: layer)
guard layer == self.layer else {
return
}
layer.frame = self.bounds
}
}

关于ios - 如何使 AVPlayer 随父 View 调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35921247/

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