我的应用程序的工作portait,ma我想全屏视频播放,甚至在横向模式使用上述插件。
为此,我创建了一个自定义渲染器来访问本机AVPlayerViewController Ios控件。
我尝试了很多方法,但似乎不可能处理退出全屏事件。在该方法中,我想强制布局纵向。我已经实现了重置方向的代码,但问题是将代码放在正确的位置。
还有其他面临同样问题的人吗??
我试着在AVPlayerView(不可访问),AVPlayerVideoController,AVPlayerCurrentItem等中搜索有用的东西
有什么想法吗?
提前谢谢你。
发布于 2017-11-14 15:26:06
我已经为您将此link中的OC代码翻译为C#,请参阅以下代码:
using Foundation;
using CoreGraphics;
playerViewController = new AVPlayerViewController();
playerViewController.ContentOverlayView.AddObserver(this, new NSString("bounds"), NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old , IntPtr.Zero);
public override void ObserveValue(NSString keyPath, NSObject ofObject, NSDictionary change, IntPtr context)
{
base.ObserveValue(keyPath, ofObject, change, context);
if(ofObject == playerViewController.ContentOverlayView)
{
if(keyPath == "bounds")
{
NSValue oldRect = change.ValueForKey(new NSString("NSKeyValueChangeOldKey")) as NSValue;
NSValue newRect = change.ValueForKey(new NSString("NSKeyValueChangeNewKey")) as NSValue;
CGRect oldBounds = oldRect.CGRectValue;
CGRect newBounds = newRect.CGRectValue;
bool wasFullscreen = CGRect.Equals(oldBounds, UIScreen.MainScreen.Bounds);
bool isFullscreen = CGRect.Equals(newBounds, UIScreen.MainScreen.Bounds);
if(isFullscreen && !wasFullscreen)
{
if(CGRect.Equals(oldBounds,new CGRect(0,0,newBounds.Size.Height, newBounds.Size.Width)))
{
Console.WriteLine("rotated fullscreen");
}
else
{
Console.WriteLine("entered fullscreen");
}
}
else if(!isFullscreen && wasFullscreen)
{
Console.WriteLine("exited fullscreen");
}
}
}
}https://stackoverflow.com/questions/47206231
复制相似问题