ios键盘横屏_iOS 强制横屏、部分横屏等功能实践
需求如下:
1.app整体只能竖屏,部分页面才可以横屏
2.app整体只能竖屏,部分页面也是竖屏,但是点击某个按钮可以使当前页面变为横屏,如全屏视频播放键。
需求1解决方法:
1.在targets - general中设置设备支持方向如下,确保设备各个方法均支持
屏幕快照 2016-12-08 下午6.41.26.png
2.在appdelegate的.h文件声明属性来标记当前设备方向@property (assign , nonatomic)UIInterfaceOrientation interfaceOrientation;
在appdelegate的.m文件中:- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window {
if(self.interfaceOrientation == UIInterfaceOrientationUnknown) { // 直播间用
return UIInterfaceOrientationMaskAllButUpsideDown;
} else if(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
//交易页面横屏用
return UIInterfaceOrientationMaskLandscapeRight;
} else { return UIInterfaceOrientationMaskPortrait;
}
}
3.在需要横屏的ViewController的ViewWillApper方法里面:Appdelegate *delegate =p.p1[UIApplication sharedApplication].delegate;
delegate.canRotate = YES;
需求2解决方法:
方法1:
1.在targets - general中设置设备支持方向如下,确保整体都是竖屏
屏幕快照 2016-12-08 下午6.30.25.png
2.在横屏(如button点击)事件处,代码如下- (void)fullScreenBtnAction { if (_isNormalOrientation) { // 如果当前是默认的竖屏
//注:当前self是UIView对象,如果是VC,则为self.view.....
self.frame = CGRectMake(0, 0, kScreenSize.height, kScreenSize.width); CGRect frame = [UIScreen mainScreen].applicationFrame; // transfrom会以当前center为锚点旋转,所以旋转后位置有偏移,需要处理
CGPoint center = CGPointMake(frame.origin.x + ceil(frame.size.width/2), frame.origin.y + ceil(frame.size.height/2)); self.center = center;
//取状态栏旋转时间// CGFloat duration = [UIApplication sharedApplication].statusBarOrientationAnimationDuration;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.3]; self.transform = CGAffineTransformMakeRotation(M_PI_2);
[UIView commitAnimations];
} else {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.3]; self.transform = CGAffineTransformIdentity;
[UIView commitAnimations]; //_originRect是进入横屏前self的frame
self.frame = _originRect;
}
_isNormalOrientation = !_isNormalOrientation; //更改状态}
***方法2:
1.在targets - general中设置设备支持方向如下,确保设备各个方法均支持 (弃用 可不设置)
屏幕快照 2016-12-08 下午6.41.26.png
2.在appdelegate的.h文件声明属性interfaceOrientation标记方向@property (assign , nonatomic)UIInterfaceOrientation interfaceOrientation;
在appdelegate的.m文件中实现设备方向方法:- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window {
if(self.interfaceOrientation == UIInterfaceOrientationUnknown) { // 直播间用
return UIInterfaceOrientationMaskAllButUpsideDown;
} else if(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) { //交易页面横屏用
return UIInterfaceOrientationMaskLandscapeRight;
} else { return UIInterfaceOrientationMaskPortrait;
}
}横竖屏转换://转换到竖屏- (void)rotateToPortraitScreenWithInvocation {
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
SEL selector = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = UIDeviceOrientationPortrait;
[invocation setArgument:&val atIndex:2];
[invocation invoke];
delegate.interfaceOrientation = UIInterfaceOrientationPortrait;
}//转换到横屏模式- (void)rotateToLandscapWithIncovation {
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
delegate.interfaceOrientation = UIInterfaceOrientationUnknown;
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];
}
作者:CoderYZY
链接:https://www.jianshu.com/p/95cdf3262bc6
ios键盘横屏_iOS 强制横屏、部分横屏等功能实践相关推荐
- ios键盘横屏_iOS横竖屏旋转及其基本适配方法 转
目录 一.最让人纠结的三种枚举 二.两种屏幕旋转的触发方式 三.屏幕旋转控制的优先级 四.开启屏幕旋转的全局权限 五.开启屏幕旋转的局部权限(视图控制器) 六.实现需求:项目主要界面竖屏,部分界面横屏 ...
- Flutter android及ios强制竖屏/横屏
Flutter android及ios强制竖屏/横屏 在main.dart内设置即可 在main.dart内设置即可 void main(){WidgetsFlutterBinding.ensureI ...
- ios中html怎么横屏,iOS如何实现强制转屏、强制横屏和强制竖屏的实例代码
本文介绍了iOS如何实现强制转屏.强制横屏和强制竖屏的实例代码,分享给大家 今天项目中遇到正在看视频的时候账号被挤,如果当时是横屏的情况下,需要强制竖屏.真头疼,网上找了好多方法,终于解决啦.O(∩_ ...
- Flutter强制某个页面横屏
1.问题描述 在某个页面中使用flutter提供的方式来强制某个页面横屏: SystemChrome.setPreferredOrientations([DeviceOrientation.portr ...
- Android开发之强制横屏和强制竖屏
原文地址:https://blog.csdn.net/qq_37219980/article/details/71194313 强制竖屏设置 1.代码在Activity的onResume方法中添加如下 ...
- Android4.4.2KK竖屏强制更改为横屏的初步简略方案
点击打开链接 解决方案: 当前是根据当前问题场景即竖屏强制更改为横屏的需求而做的改动,基本是hardcode定义的状态,总共修改有效代码行数5行,如果后续有其他需求或者需要更灵活的配置横屏和竖屏,可以 ...
- 小胖说事30------iOS 强制转成横屏的方式
一直遇到这个问题,今天最终找到了解决方法. 在我们的项目中常常遇到横竖屏切换,而又有某个特定的界面必须是特定的显示方式(横屏或竖屏).这就须要例如以下的处理了. 强制转成横屏:if ([[UIDevi ...
- 三星手机拍照强制切换到横屏及照片旋转问题
最近在做项目,项目里面有拍照上传的功能,无非就是吊起系统拍照功能,然后获取所拍照的地址,然后上传即可.但是当我无意间拿了一部三星手机装了App之后,当使用拍照功能的时候,拍完之后,界面并没有出现所拍的 ...
- H5页面 ios 键盘收起后弹出层焦点错位
请注明出处:https://blog.csdn.net/qq_23179075/article/details/86497498 解决H5页面 ios键盘收起后弹出层焦点错位问题 用 H5 写app页 ...
最新文章
- SQL中游标的使用(转)
- eclipse log4j 日志直接定位到source
- 封装案例-02-创建(qiang)类
- 破站www.2637.cn居然敢截持偶的IE!
- Upload LABS Pass-9
- Python中字符串格式化输出的学习笔记
- solr搭建(linux)
- 简述deque容器的插入删除原理
- Linux系统下载Unity-Tweek-Tool
- android 人脸 动画表情包,巧笑表情包怎么制作 Android好玩的emoji人脸表情软件推荐...
- 动态添加element标签,数据操作
- AtCoder Beginner Contest 062(CD)
- ios实现video自动播放
- 从 Chrome 源码看浏览器如何计算 CSS
- C语言C Prime总结(2-7章)
- 如何用c语言给信息加密,求助:如何用C语言实现LFSR加密
- 等精度测频原理--频率计
- mysql查看指定全局变量_【全局变量】mysql查看全局变量以及设置全局变量的值...
- Linux so库查看工具
- 程序员要从“美团崩溃”中学习的痛点
热门文章
- 从零写一个操作系统之booting
- android2048项目报告,Android项目开发实战-2048游戏
- Google的一个代理网站: 仅限技术搜索
- 百度数据可视化Sugar BI 数据自动补全
- Android读写日历,android – 读写日历
- 噩梦射手(SurvivalShooter)教程(九)
- python字体类型arial_python-3.x - 为什么我的font.name属性不影响使用Python-pptx制作的ppt上的字体? 我总是得到arial字体 - 堆栈内存溢出...
- 微信服务号解决开启服务配置后自定义菜单失效的方法
- Node.js相关资源
- 《区块链技术原理》笔记