少し問題が発生しています。UINavigationControllerバーを使用してアプリを開発しようとしていますが、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.mviewDidLoadメソッドでこれらを試しました:
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;
}
はい、すべてのコントローラーでこのメソッドを試しましたが、すべてのコントローラーでYESが返されますが、NavigationBarは回転しません。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
ですから、NavigationBarを実際に回転させることは可能かどうか疑問に思います。また、作成するように作成しますか?この方法でUINavigationControllerを開始する必要がありますか、それともIBで作成して.hクラスにリンクする必要がありますか?
長い間読んで申し訳ありません、そしてあなたが提供できるどんな助けにも感謝します