美文网首页
屏幕旋转~随笔

屏幕旋转~随笔

作者: hello_kitty | 来源:发表于2024-01-19 00:38 被阅读0次

1、方向旋转三种枚举

  • UIDeviceOrientation 设备当前的旋转方向

  • UIInterfaceOrientation 界面当前的旋转方向(控制器)

  • UIInterfaceOrientationMask 界面当前支持的旋转方向

2、方向控制优先级

Appdelegate代码控制 > XcodeGeneral设置(info.plist设置) > 控制器的代码控制

xcode设置

image-20220715094806599.png

App delegate

image-20220715094941652.png

界面控制

image-20220715095258510.png

3、界面控制注意事项

image-20220715095416075.png image-20220715095516937.png

4、单个界面强制旋转

//进入界面:设置横屏

[self setDeviceInterfaceOrientation:UIDeviceOrientationLandscapeLeft];

//方法1和方法2只有在shouldAutorotate返回YES的时候生效

//如果有导航控制器和Tabbar控制器,则要注意控制优先级

//方法1:强制屏幕旋转

  • (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];

}

}

//方法2:强制屏幕旋转

  • (void)setDeviceInterfaceOrientation:(UIDeviceOrientation)orientation {

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

[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:orientation] forKey:@"orientation"];

}

}

5、更新状态栏方向

  • 更新状态栏方向

[self setNeedsStatusBarAppearanceUpdate];

  • 更新控制器方向

[UIViewController attemptRotationToDeviceOrientation];

image-20220715113452369.png

6、实战开发2种策略

  • 控制权交给当前控制器
image-20220715110759448.png image-20220715110829155.png
  • 控制权交给appDelegate控制(通过外部参数控制)
image-20220715111018796.png

参考文献

https://www.jianshu.com/p/a354ca1890de

https://www.jianshu.com/p/84a148e58fc8

相关文章

  • iOS 屏幕旋转

    屏幕旋转 认知 期望达到的目的 如何让App支持屏幕旋转 如何让App屏幕旋转 如何保证屏幕旋转后布局不会乱 总结...

  • 屏幕旋转

    屏幕旋转 推荐文档 了解UIWindow——UIWindow实践 iOS屏幕旋转问题总结 IOS:屏幕旋转与变换 ...

  • 屏幕旋转

    UIDevice.current.setValue(UIInterfaceOrientation.landscap...

  • 屏幕旋转

    import "AppDelegate.h" import "ViewController.h" @interfa...

  • 屏幕旋转

    在做工程的时候碰到了屏幕旋转的问题,如今已经解决.为大家分享一下 屏幕旋转机制流程 (1)加速计检测到方向变化,发...

  • 屏幕旋转

    每个视图控制器都控制着自己的旋转方向,如果需要新的旋转权限需要模态出新的视图控制器(如navigation tab...

  • 屏幕旋转

    当activity设置默认属性的时候:竖屏和横屏旋转可以通过监听onConfigurationChanged来判断...

  • 屏幕旋转

    在创建的vc中 //指定能够支持的orientation有哪些 -(UIInterfaceOrientationM...

  • 屏幕旋转

    本文涉及到的转屏是咱们的app的某个页面设置横竖屏的切换 必须先在appdelegate中实现下面的方法-(UII...

  • 屏幕旋转

    第一步 在 AppDelegate.h 里增加一个属性 用来区分哪个界面可以横屏 哪个界面不可以 第二步 在 Ap...

网友评论

      本文标题:屏幕旋转~随笔

      本文链接:https://www.haomeiwen.com/subject/zebdodtx.html