gpt4 book ai didi

iphone - 允许独立于父 View 的 QLPreviewController 旋转

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:27 24 4
gpt4 key购买 nike

我的应用不支持旋转。但我想展示一个支持旋转的 QLPreviewController。我这样呈现 QLPreviewController:

[self presentModalViewController:thePrevController animated:NO];

我该怎么做?

最佳答案

在您的应用程序 plist 文件中启用所有旋转。这将使所有 View 旋转,而不管 View Controller 中的设置如何。

然后将您的根 UINavigationController 子类化如下,根据您的要求添加适用于 iOS5 和 6 的旋转控制代码:

我正在使用 MainWindow.xib 更新旧应用程序,因此我将 xib 文件中的导航 Controller 类更改为 CustomNavigationController。但是在带有主菜单的更现代的应用程序中,您可以像这样实例化导航 Controller :

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

MainMenuVC *masterViewController = [[MainMenuVC alloc] initWithNibName:@"MainMenuVC" bundle:nil];
self.navigationController = [[CustomNavigationController alloc] initWithRootViewController:masterViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];

子类 UINavigationController

#import <UIKit/UIKit.h>

@interface CustomNavigationController : UINavigationController

@end

#import "CustomNavigationController.h"

@interface CustomNavigationController ()

@end

@implementation CustomNavigationController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}

@end

然后将 QLPreview Controller 子类化,这样您就可以重写旋转代码,这将为 QLPreviewController 启用旋转。由于 CustomNavigationController 已锁定,应用程序的其余部分以及从您的 CustomNavContoller 推送的 View 将不会旋转。

我在 View Controller 的顶部添加了这个接口(interface)和实现,我想在那里展示 QLPreviewController。

@interface RotatingQLPreviewController : QLPreviewController

@end

@implementation RotatingQLPreviewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
return YES;
}

@end

然后使用您的子类展示您的 QLPreviewController。

RotatingQLPreviewController *preview = [[RotatingQLPreviewController alloc] init];
preview.dataSource = self;
[self presentViewController:preview
animated:YES
completion:^(){
// do more stuff here
}];

这个方法应该适用于你想旋转的其他模态视图,但我没有尝试过。

我在我正在开发的最新应用程序中实现了这个方法,并且适用于 iOS5 和 6。

希望对您有所帮助。

关于iphone - 允许独立于父 View 的 QLPreviewController 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573940/

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