iOS8的屏幕旋转的问题

判断横竖屏。http://www.cocoachina.com/ask/questions/show/121301

 

 

//self.cameraView是相机view



 



- (NSUInteger)supportedInterfaceOrientations



{



    UIInterfaceOrientation e = [[UIApplication sharedApplication] statusBarOrientation];



    if (e == UIInterfaceOrientationLandscapeLeft) {



        



        if (self.cameraView) {



            self.cameraView.transform = CGAffineTransformMakeRotation((-270 * M_PI) / 180.0f);



        }



    }else if (e == UIInterfaceOrientationLandscapeRight) {



        



        if (self.cameraView) {



            self.cameraView.transform = CGAffineTransformMakeRotation((270 * M_PI) / 180.0f);



        }



        



    }



    return (UIInterfaceOrientationMaskLandscape);



}



 



 



- (void)viewDidLoad



{



    [super viewDidLoad];



    // Do any additional setup after loading the view.



    //m_bScreen是bool 型,判断横竖屏。



    if ([[[UIDevice currentDevice]systemVersion ]floatValue]  >= 8.0) {



        BOOL m_bScreen = NO;



        



        UIInterfaceOrientation e = [[UIApplication sharedApplication] statusBarOrientation];



        if (e == UIInterfaceOrientationLandscapeLeft) {



            m_bScreen = NO;



        }else if (e == UIInterfaceOrientationLandscapeRight) {



            m_bScreen = YES;



        }



        if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {



            



            NSNumber *num = [[NSNumber alloc] initWithInt:(m_bScreen?UIInterfaceOrientationLandscapeRight:UIInterfaceOrientationLandscapeLeft)];



            



            [[UIDevice currentDevice] performSelector:@selector(setOrientation:) withObject:(id)num];



            



            [UIViewController attemptRotationToDeviceOrientation];//这行代码是关键



            



        }



        SEL selector=NSSelectorFromString(@"setOrientation:");



        



        NSInvocation *invocation =[NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];



        



        [invocation setSelector:selector];



        



        [invocation setTarget:[UIDevice currentDevice]];



        



        int val =m_bScreen?UIInterfaceOrientationLandscapeRight:UIInterfaceOrientationLandscapeLeft;



        



        [invocation setArgument:&val atIndex:2];



        



        [invocation invoke];



    }



    



    



}

 

 

获取相机view的方法:

 

#pragma mark UINavigationControllerDelegate



- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{



    if ([[[UIDevice currentDevice]systemVersion ]floatValue]  >= 8.0) {



        UIView *PLCameraView=[self findView:viewController.view withName:@"PLImagePickerCameraView"];



        NSArray *svarray = [PLCameraView subviews];



        self.imagePickerController.cameraView = svarray[0];



        for (int i = 1; i < svarray.count; i++)  { //i: 0 相机 1 拍照界面 2 重拍界面



            if (i == 1) {



                NSArray *arr = [svarray[1] subviews];



                for (int i = 0; i < arr.count; i++) {



                    if (i == 9) { //i: 1 前置摄像头切换



                        [[arr objectAtIndex:i] setAlpha:0.0f];



                    }



                }



            }



        }



    }else if ([[[UIDevice currentDevice]systemVersion ]floatValue]  >= 7.0) {



        UIView *PLCameraView=[self findView:viewController.view withName:@"PLCameraView"];



        NSArray *svarray = [PLCameraView subviews];



        for (int i = 1; i < svarray.count; i++)  { //i: 0 相机 1 拍照界面 2 重拍界面



            if (i == 1) {



                NSArray *arr = [svarray[1] subviews];



                for (int i = 0; i < arr.count; i++) {



                    if (i == 1) { //i: 1 前置摄像头切换



                        [[arr objectAtIndex:i] setAlpha:0.0f];



                    }



                }



            }



        }



    }



}



#pragma mark get/show the UIView we want



//Find the view we want in camera structure.



-(UIView *)findView:(UIView *)aView withName:(NSString *)name{



    Class cl = [aView class];



    NSString *desc = [cl description];



    



    if ([name isEqualToString:desc])



        return aView;



    



    for (NSUInteger i = 0; i < [aView.subviews count]; i++)



    {



        UIView *subView = [aView.subviews objectAtIndex:i];



        subView = [self findView:subView withName:name];



        if (subView)



            return subView;



    }



    return nil;



}

 

你可能感兴趣的:(ios)