gpt4 book ai didi

ios - 更改 MPMoviePlayerController 内容不适用于 performSelectorInBackground

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

我正在尝试通过在后台运行的功能更改我的 MPMoviePlayerController 方法的内容。但是我的内容没有更改

[self performSelectorInBackground:@selector(updateVideo) withObject:nil];

这是我开始加载视频的viewDidLoad 方法

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

VideoView *videoView = [[VideoView alloc] initWithFrame:CGRectMake(0, 0, 293, 320)];
NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"My Movie4" ofType:@"mp4"];
NSURL *videoURL = [NSURL fileURLWithPath:videoPath];
controller = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[controller.view setFrame:videoView.bounds];
[videoView addSubview:controller.view];
[self.videoviewer addSubview: videoView];
[controller prepareToPlay];
[controller play];
}

其中VideoView是UIView的子类,我的updateVideo函数是这样的

-(void)updateVideo
{
[controller setContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"video2" ofType:@"mp4"] ]];
[controller prepareToPlay];
[controller play];
}

但是在后台运行的函数被调用时,视频内容没有改变。

最佳答案

为什么要尝试更改后台线程中的内容?

不能在后台线程中更改 UI 元素。您必须在 主线程 中执行此任务。

尝试这样做:

[self updateVideo]

如果你愿意,也可以这样,但我建议你使用第一种方法。

-(void)updateVideo
{
[controller setContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"video2" ofType:@"mp4"] ]];
dispatch_async(dispatch_get_main_queue(), ^{
[controller prepareToPlay];
[controller play];
});
}

希望对你有帮助

关于ios - 更改 MPMoviePlayerController 内容不适用于 performSelectorInBackground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25988321/

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