gpt4 book ai didi

iphone - 在 UIWebView 视频播放期间允许 UIInterfaceOrientationLandscape

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

我的 iPhone 应用程序是一个纵向应用程序,在我的应用程序中,我有一个 UITableView,它在第一个 UITableCell 中有一个 UIWebViewUIWebView 显示嵌入的 youtube 视频。当我点击视频播放时,它进入全屏模式。我需要做的是,允许用户旋转他们的设备并以横向模式播放视频。然后当视频停止时只允许再次纵向。我设置为在视频进入全屏和离开全屏时收听通知。但我不知道如何以编程方式允许用户旋转界面方向。

所以基本上我在通知通过时调用了 2 个方法

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youTubeStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youTubeFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];

-(void)youTubeStarted:(NSNotification *)notification{
// Entered fullscreen code goes here.
}

-(void)youTubeFinished:(NSNotification *)notification{
// Left fullscreen code goes here.
}

我应该在这 2 种方法中添加什么以允许仅在视频播放期间更改方向?

最佳答案

我想通了。在我的两种方法中:

-(void)youTubeStarted:(NSNotification *)notification{
// Entered Fullscreen code goes here..
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.fullScreenVideoIsPlaying = YES;
}

-(void)youTubeFinished:(NSNotification *)notification{
// Left fullscreen code goes here...
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.fullScreenVideoIsPlaying = NO;

//CODE BELOW FORCES APP BACK TO PORTRAIT ORIENTATION ONCE YOU LEAVE VIDEO.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
//present/dismiss viewcontroller in order to activate rotating.
UIViewController *mVC = [[UIViewController alloc] init];
[self presentModalViewController:mVC animated:NO];
[self dismissModalViewControllerAnimated:NO];
}

我通过设置 AppDelegate 的 BOOL 属性在上述方法中访问了我的 App 委托(delegate)。然后我在我的 AppDelegate.m 中调用了下面的应用程序方法:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
NSUInteger orientations = UIInterfaceOrientationMaskPortrait;
if (self.fullScreenVideoIsPlaying == YES) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
if(self.window.rootViewController){
UIViewController *presentedViewController = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject];
orientations = [presentedViewController supportedInterfaceOrientations];

}
return orientations;
}
}

self.fullScreenVideoIsPlaying 是我在 AppDelegate.h 文件中设置为属性的 BOOL

我希望这可以帮助其他人,因为我花了 5 个小时才弄明白。

关于iphone - 在 UIWebView 视频播放期间允许 UIInterfaceOrientationLandscape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181610/

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