zoukankan      html  css  js  c++  java
  • iOS 横竖屏适配 笔记

     研究消息转发机制 已经一周多了,但是 还是没整理出博客, 还是先写一个 项目中遇到的 横竖屏适配问题。

    // 开启自动转屏
    - (BOOL)shouldAutorotate {
        return YES;
    }
    // 设备支持方向
    - (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
    }
    // 默认方向 
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
      }
    
    

     如果是RootViewController,上面这三行是足够。 

     如果需要强制横屏,那么就需要在 -(void)viewDidLoad 中调用下面的方法;如果自动转屏是 NO, 那么这个方法不调用

    - (void)setInterfaceOrientation:(UIInterfaceOrientation)orientation {
        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 = orientation;
            [invocation setArgument:&val atIndex:2];
            [invocation invoke];
        }
    }

    如果横屏启动后,发现 有半个屏幕黑屏, 那么 你就需要使用XCode 查看UI 屏幕方向,如果屏幕是横的,那么你就需要把视图适配一个横屏的。

    在 转屏的回调中设置 适配

    - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
        
        if (size.width > size.height) { // 横屏
            // 横屏布局 
        } else {
            // 竖屏布局 
        }
    }

    或者

    - (void)layoutSubviews {
        [super layoutSubviews];
        // 通过状态栏电池图标来判断屏幕方向
        if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationMaskPortrait) {
            // 竖屏适配
        } else {
            // 横屏适配
        }
    }

     强制横屏启动

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [application setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
        [window addSubview:EC_CAST(UIView,splashView)];
        [window makeKeyAndVisible];
        return YES;

  • 相关阅读:
    js修改剪切板内容的方法
    使用jq获取文字的宽度
    如何改变placeholder的样式
    如何使用phpmyadmin建立外键约束
    php上传文件中文文件名乱码的解决方法
    如何禁止审查元素扒代码(F12)
    如何使用css影藏滚动条
    webstorm配置babel自动转译es6的方法
    css纯字母或者字母换行显示
    使用Jquery做分页效果
  • 原文地址:https://www.cnblogs.com/DafaRan/p/7744515.html
Copyright © 2011-2022 走看看