• 小胖说事30------iOS 强制转成横屏的方式


    一直遇到这个问题,今天最终找到了解决方法.

    在我们的项目中常常遇到横竖屏切换,而又有某个特定的界面必须是特定的显示方式(横屏或竖屏).这就须要例如以下的处理了.

    强制转成横屏:
    
    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;
    }

    说明一下:假设实现了下边的两个方法。你的应用程序在初始化的时候有多少个controller就会走多少次下边两个方法。showldAutorotate这种方法是再你即将旋转屏幕的时候,就会再次调用,仅仅要在这里推断好YES或者NO就好了。

    在你须要的时候通过shouldAutorot这个变量打开,不须要的时候关闭就能够了。有什么不明确的,能够增加上边的QQ群。里边问我。

    -(BOOL)shouldAutorotate    //是否支持旋转。假设为NO,则下边的方法就不会调用,假设为YES,才会调用
    {
        if (!shouldAutorot) {
            return NO;
        }else{
            return YES;
        }
    }
    
    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }

  • 相关阅读:
    vfio
    render
    数据库分类
    git 随笔
    js自定义弹窗
    bootstrap学习笔记<十一>(导航条)
    bootstrap学习笔记<十>(按钮组,导航)
    bootstrap学习笔记<九>(菜单,按钮。导航基本元素)
    bootstrap学习笔记<八>(bootstrap核心布局风格——栅格系统)
    bootstrap学习笔记<七>(图标,图像)
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6955823.html
Copyright © 2020-2023  润新知