1.界面旋转,MainScreen的宽高不变,键盘位置不变

CGFloat duration = [UIApplication sharedApplication].statusBarOrientationAnimationDuration;

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:duration];

self.view.transform =CGAffineTransformMakeRotation(M_PI/2);

[UIView commitAnimations];

2.界面旋转,MainScreen的宽高改变,键盘位置不变

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

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

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

        [invocation setSelector:selector];

        [invocation setTarget:[UIDevice currentDevice]];

        int val = UIInterfaceOrientationLandscapeRight;

        [invocation setArgument:&val atIndex:];

        [invocation invoke];
}

3.界面旋转,MainScreen的宽高改变,键盘位置改变

a.General—>中勾选Lnadscape Left/Lnadscape Right,默认是勾选上了的

iOS横屏设置的几种方式-LMLPHP

b.控制器中实现以下两个方法:

// 支持设备自动旋转
- (BOOL)shouldAutorotate
{
return YES;
} /**
* 设置特殊的界面支持的方向,这里特殊界面只支持Home在右侧的情况
*/
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeRight;
}

PS:如何判断当前是否横屏,一下3个方法都可以

    self.interfaceOrientation(iOS 2.0~8.0)

  [UIApplication sharedApplication] statusBarOrientation]

  [[UIDevice currentDevice] orientation]

05-11 13:22