gpt4 book ai didi

objective-c - UINavigationBar 不旋转

转载 作者:行者123 更新时间:2023-11-29 04:26:23 26 4
gpt4 key购买 nike

我遇到了一个小问题。我正在尝试使用 UINavigationController bar 开发一个应用程序,但它没有旋转,尽管我的 tableView 是。只需一点介绍,您就知道我现在的应用程序是什么:我有一个在 IB 中创建并链接到我的 ViewController.h 类中的 UITableView,以及在 appDelegate.h 中创建的 UINavigationController。 tableView中的所有项目都可以点击,它会滑动到另一个viewController,但这部分现在并不重要。我现在只是想支持主视图中的旋转。

我在 AppDelegate.h 中创建 UINavigationController,如下所示:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
UINavigationController *navigation;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *viewController;

然后在 AppDelegate.m 中我这样做:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

return YES;
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
ViewController *viewController = [[ViewController alloc] init];
viewController.title = @"Agrinuvo";
[navigation pushViewController:viewController animated:NO];
navigation = [[UINavigationController alloc] initWithRootViewController:viewController];
navigation.navigationBar.tintColor = [UIColor darkGrayColor];
[[UIBarButtonItem appearance] setTintColor:[UIColor orangeColor]];

[_window addSubview:navigation.view];
}

我在 ViewController.m viewDidLoad 方法中尝试过这些:

self.navigationController.navigationBar.autoresizesSubviews = YES;
self.navigationController.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;

我可以调整 UINavigationBar 的大小,但我无法旋转它(仍在 ViewController.m 中):

-(void) orientationChanged
{
CGRect frame = self.navigationController.navigationBar.frame;
if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait)
{
self.view.transform = CGAffineTransformMakeRotation(0);
frame.size.height = 44;
frame.origin.y = 15;
}
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown)
{
self.view.transform = CGAffineTransformMakeRotation(M_PI * 1);
frame.size.height = 44;
}
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)
{
self.view.transform = CGAffineTransformMakeRotation(M_PI * -0.5);
frame.size.height = 32;
}
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft)
{
self.view.transform = CGAffineTransformMakeRotation(M_PI * 0.5);
frame.size.height = 32;
}
self.navigationController.navigationBar.frame = frame;
}

啊,是的,我也在我的所有 Controller 中尝试了这种方法,它在所有 Controller 中都返回 YES,但导航栏仍然不旋转。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

所以我想知道是否真的可以旋转导航栏。我是否也像应该创建的那样创建它?我应该以这种方式启动 UINavigationController 还是应该在 IB 中创建它并将其链接到 .h 类?

很抱歉让您阅读了很长时间,并感谢您提供的任何帮助

最佳答案

您应该使导航 Controller 成为窗口的 Root View Controller 。另外,在您的 applicationDidBecomeActive: 方法中,您有这一行: [navigation PushViewController:viewControllerAnimated:NO];您在实例化导航之前使用它,因此该行不会执行任何操作。

关于objective-c - UINavigationBar 不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284740/

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