iOS 横竖屏强制转换

强制转成横屏:
// 如果要上传AppStore请慎用,不知道是否能够通过,未尝试
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:2];
[invocation invoke];
}

通过判断状态栏来设置视图的transform属性。

  • (void)deviceOrientationDidChange: (NSNotification *)notification
    {
    UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
    CGFloat startRotation = [[self valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
    CGAffineTransform rotation;
    switch (interfaceOrientation) {
    case UIInterfaceOrientationLandscapeLeft:
    rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 270.0 / 180.0);
    break;
    case UIInterfaceOrientationLandscapeRight:
    rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 90.0 / 180.0);
    break;
    case UIInterfaceOrientationPortraitUpsideDown:
    rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 180.0 / 180.0);
    break;
    default:
    rotation = CGAffineTransformMakeRotation(-startRotation + 0.0);
    break;
    }
    view.transform = rotation;
    }

你可能感兴趣的:(iOS 横竖屏强制转换)