【发布时间】:2023-03-23 13:44:01
【问题描述】:
我正在尝试在视图中播放视频,以便可以移动它,与其他视图一起执行布局,但我似乎无法使用 MPMoviePlayerController。我在how to play video in portrait mode 上看到了这个链接,但这是不可能的,因为视频源来自网络,应该可以在不同的平台上播放,而不仅仅是在 iPhone 上。
我已经成功地旋转了视频并对其进行了缩放,但它仍然包含在一个填满整个屏幕的 UIWindow 中。有没有办法创建一个中间 UIWindow 但在当前屏幕中不可见,所以您可以在那里播放视频并可能添加子视图并将所有内容作为 UIView 返回,我可以将它放置在任何地方?类似于创建 CGGraphics 上下文,在那里绘制对象并作为图像输出。这也将防止当前屏幕从纵向旋转到横向。
----- 2010/06/22 06:10+08:00 ---
响应 Jasarien 的回答(如下),实际上可以旋转和缩放视频。视频预加载后,它会创建另一个 UIWindow 实例,该实例随后成为那个时候的 keywindow。通过在 MPMoviePlayerContentPreloadDidFinishNotification 创建回调选择器,可以应用当前键窗口的变换修改。
-(void)myMovieFinishedPreloading:(NSNotification*)aNotification {
NSArray *windows = [[UIApplication sharedApplication] windows];
UIWindow *moviePlayerWindow = nil;
if ([windows count] > 1)
{
moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
}
CGAffineTransform transform = CGAffineTransformMakeScale(0.5, 0.5);
transform = CGAffineTransformRotate(transform, -90.0f*M_PI/180.0f);
[moviePlayerWindow setTransform:transform];
}
现在我的问题是它是 UIWindow 的一部分,并且由于 UIWindow 是 UIView 的子类,是否可以对这个 UIView 进行子视图?此外,我似乎无法在预加载视频时禁用自动旋转行为。
【问题讨论】:
标签: iphone objective-c mpmovieplayercontroller