如何在横向启动应用程序? (沮丧的) [英] How to launch app in landscape? (frustrated)

查看:88
本文介绍了如何在横向启动应用程序? (沮丧的)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题应该是一个简单的问题... 我在Google上搜索了很多,并尝试了我项目中的所有设置. 我正在做的不是我的项目.从应用程序委托启动的应用程序,然后我添加了UIViewController(无XIB文件),所有代码均由代码完成. ViewController实际上是在横向上,但问题是应用程序是在纵向上运行的(当我拉动通知视图时,它像在纵向模式下一样变成了dow).

this issue is supposed to be a simple one... i have googled a lot about it and i have tried all the setups on my project. the thing is i am working on a project that is not mine. the app launched from the app delegate and then i am adding aUIViewController (without XIB file) everything done by code. the ViewController is actually on landscape, but the thing is the the app is running on portrait (when i am pulling the notification view it turns dow like in the portrait mode).

这在AppDelegate.m文件中实现:

this is implemented in the AppDelegate.m file:

- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationLandscapeRight;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
 }



- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{                                                                                                     

 return UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortrait; 

 //if i am writing only the landscape right orientation the app crashes!



}

*由于未捕获的异常'UIApplicationInvalidInterfaceOrientation'而终止应用程序,原因:'支持的方向与应用程序没有共同的方向,并且shouldAutorotate返回YES' * :第一个引发调用堆栈: (0x3bfef2a3 0x35ede97f 0x3bfef1c5 0x3518988f 0x3532e579 0x3520dd3d 0x3520cfc7 0x3532f257 0xa5bc1 0x35188319 0x351a4f0f 0x351a4e97 0x3512aa33 0x3bfc46cd 0x3bfc29c1 0x3bfc2d17 0x3bf35ebd 0x3bf35d49 0x3a3032eb 0x351752f9 0x9803b 0x97fe0) libc ++ abi.dylib:终止引发异常

* Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES' * First throw call stack: (0x3bfef2a3 0x35ede97f 0x3bfef1c5 0x3518988f 0x3532e579 0x3520dd3d 0x3520cfc7 0x3532f257 0xa5bc1 0x35188319 0x351a4f0f 0x351a4e97 0x3512aa33 0x3bfc46cd 0x3bfc29c1 0x3bfc2d17 0x3bf35ebd 0x3bf35d49 0x3a3032eb 0x351752f9 0x9803b 0x97fe0) libc++abi.dylib: terminate called throwing an exception

如果我使用纵向模式编写应用程序,则该应用程序将启动.我还尝试在info.plist中添加行,并将关键点的初始界面方向值设置为横向(右侧主页按钮). 也将支持的界面方向也设置为lanscape. 没有任何改变,我只想知道如何获得该行为以横向模式从上方获取通知

if i am writing it with the portrait mode the app launches. i have also tried to add row in the info.plist and set the key to initial interface orientation value to the landscape (right home button). also put the supported interface orientation to lanscape as well. non of this change anything, i just want to know how i can get that behavior to get the notification from above in the landscape mode

任何人,谢谢!

推荐答案

在您的应用程序委托.m文件中尝试这种方式...

    #define IOS_OLDER_THAN_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0 )
    #define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )



        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {


            self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

            [NSThread sleepForTimeInterval:0.1]; // simulate waiting for server response

            // Override point for customization after application launch.

            self.viewController = [[[ViewController alloc] init] autorelease];

            // Initialise the navigation controller with the first view controller as its root view controller

            UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];

            // This is where we hide the navigation bar! :)

            [navigationController setNavigationBarHidden:NO];

            // Navigation controller has copy of view controller, so release our copy


               [self.viewController release];

            // Add the navigation controller as a subview of our window

            if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0)
            {
                // how the view was configured before IOS6
                [self.window addSubview: navigationController.view];
               // [self.window makeKeyAndVisible];
            }
            else
            {
                // this is the code that will start the interface to rotate once again
        //        [self.window setRootViewController: self.navigationController];
                [self.window setRootViewController:navigationController];
            }

        //    [self.window setRootViewController:navigationController];
            [_window makeKeyAndVisible];
            return YES;
        }


    #ifdef IOS_OLDER_THAN_6
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
       // [image_signature setImage:[self resizeImage:image_signature.image]];
        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft | toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
    #endif

    #ifdef IOS_NEWER_OR_EQUAL_TO_6
    -(BOOL)shouldAutorotate {
        return YES;
    }
    - (NSUInteger)supportedInterfaceOrientations {
       // [image_signature setImage:[self resizeImage:image_signature.image]];
        //return UIInterfaceOrientationMaskLandscapeLeft;
        return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
    }
    #endif

    - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    {
        return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
    }

**`

还要在所有视图控制器.m文件中写下此代码

And also Write down the this code in your all view controller .m file

`**

#define IOS_OLDER_THAN_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0 )
#define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )


#ifdef IOS_OLDER_THAN_6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
   // [image_signature setImage:[self resizeImage:image_signature.image]];
    //return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft | toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
    if(toInterfaceOrientation ==UIInterfaceOrientationLandscapeLeft){
        NSLog(@"Changed Orientation To Landscape left");

        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);

    }else{
        NSLog(@"Changed Orientation To Landscape right");
        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
}
#endif

#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
  //  [image_signature setImage:[self resizeImage:image_signature.image]];
    //return UIInterfaceOrientationMaskLandscapeLeft;
    return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
#endif

这篇关于如何在横向启动应用程序? (沮丧的)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆