我的应用程序不适用于景观。但是当我在 UIWebView 中打开我的YouTube频道并且用户启动视频时,它会显示在肖像中。如果用户转动他的iPhone,我想让它以横向模式显示。
如何在这种情况下启用横向模式?
我知道这样做会有“肮脏的黑客”,但我更喜欢更清洁的东西。此外,我不希望UIWebView切换到横向,但只是视频可以。
答案 0 :(得分:2)
我最终调整了视图,以便使用以下代码支持横向模式:
- (void)viewDidLoad {
[super viewDidLoad];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification object:nil];
}
- (void)viewWillAppear:(BOOL)animated {
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation))
{
//I set my new frame origin and size here for this orientation
isShowingLandscapeView = YES;
}
else if (deviceOrientation == UIDeviceOrientationPortrait)
{
//I set my new frame origin and size here for this orientation
isShowingLandscapeView = NO;
}
}
- (void)orientationChanged:(NSNotification *)notification
{
// We must add a delay here, otherwise we'll swap in the new view
// too quickly and we'll get an animation glitch
[self performSelector:@selector(updateLandscapeView) withObject:nil afterDelay:0];
}
- (void)updateLandscapeView
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) && !isShowingLandscapeView)
{
//I set my new frame origin and size here for this orientation
isShowingLandscapeView = YES;
}
else if (deviceOrientation == UIDeviceOrientationPortrait && isShowingLandscapeView)
{
//I set my new frame origin and size here for this orientation
isShowingLandscapeView = NO;
}
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait || UIInterfaceOrientationIsLandscape(interfaceOrientation));
}
答案 1 :(得分:0)
要以横向视图显示视频,只需转到该视图的属性检查器,您在Xcode中实现了webView 并将方向从纵向更改为横向。 就像那个一样简单..享受
并且不要忘记添加此代码
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
return YES;
}
}
答案 2 :(得分:0)
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
id presentedViewController = [window.rootViewController presentedViewController];
NSString *className = presentedViewController ? NSStringFromClass([presentedViewController class]) : nil;
if (window && [className isEqualToString:@"AVFullScreenViewController"] && [presentedViewController isBeingDismissed] == NO) {
return UIInterfaceOrientationMaskAll;
} else {
return UIInterfaceOrientationMaskPortrait;
}}
//这适用于ios8