iOS横竖屏切换的一些坑(持续更新)
最近在做视频类的App,遇到视频滚动播放的坑,紧接着就是横竖屏问题。之前太过天真不想做横竖屏配置。只是想旋转视频View,但是分享什么的包括AlertView还是竖屏样式,项目着急上线(1周提交一次也是够了。。。人家审核都烦了估计)也就一直没改。昨天开始改才发现是一个深坑!
因为首页是滚动播放,不想做横屏适配,坐标判断什么的还要改来改去,看了下目前主流App,搜狐做的貌似是最好的。具体效果如图
(傻傻的我截图结了半天才截到,我竟然不知道相机有一个功能叫做慢动作)
他们横屏转动的时候后面的tableView不动的,当初就是看了一眼就天真的以为只是转动个view,其实还是竖屏。。。但是
紧接着就是网络判断啥的,忽然才发现我根本就拉不出来这个面板啊 = =!只能竖着拉有木有
拉出来之后直接竖屏了有木有!!!
所以想到了他们应该是改变界面方向。然后就想,后面tableview不动,那我就手动改界面方向然后转视频View呗。
在ios8以前,手动调用
UIApplication *application=[UIApplication sharedApplication];
[application setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
应该可以选择界面方向,关于界面方向和设备方向,详见一片枫叶大神的《屏幕旋转笔记》
但是在我的代码中调用之后没反应,后来查找资料发现在我的基类Viewcontroller里
- (BOOL)shouldAutorotate
{
return YES;
}
好吧,在显示视频窗那里返回NO
- (BOOL)shouldAutorotate
{
return NO;
}
发现statusbar转过去了,视图什么的都没动,这时间上拉下拉面板什么的也都对了,弹出的Alertview 方向也正确
就连键盘方向都对。好啦,问题貌似解决了。我视频全屏的时候至于要设置statusbar的方向,然后自己转下视频窗体就OK了。
然后我就开开心心睡觉去了。
第二天。。按着这个思路改了下,发现没什么问题,分享啥的方向也对,只需要控制视图大小和旋转就好了。似乎到这里也就结束了,其实很简单嘛。。。
但是,忽然间想到iOS8出来以后貌似UIScreen的bounds会跟着界面方向转动,bounds改变了会不会又影响,立马用模拟器跑了一遍,果然有问题
宽高貌似反了,iOS8果然有坑!幸好记得有这么个情况,详见为毛iOS8下UIScreen的bonuns改变了
原来在iOS8下面
UIScreen is now interface oriented:
- [UIScreen bounds] now interface-oriented
- [UIScreen applicationFrame] now interface-oriented
- Status bar frame notifications are interface-oriented
- Keyboard frame notifications are interface-oriented
哪我判断下就好了,于是
CGFloat max = MAX(SCREEN_HEIGHT, SCREEN_WIDTH);
CGFloat min = MIN(SCREEN_HEIGHT, SCREEN_WIDTH);
_player.view.frame = CGRectMake(0, 0, min, max);
再次运行,好了,全屏可以了。恩,好像所有坑都填完了,表现不错,今天中午给自己加个鸡腿
iOS横竖屏切换的一些坑(持续更新)的更多相关文章
- iOS 横竖屏切换(应对特殊需求)
iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UI ...
- iOS 横竖屏切换解决方案
iOS要实现横竖屏切换很简单,不需要使用任何第三方,只需要实现几个方法就可以了. 1.设置系统支持横竖屏[General]->[Targets]-> [Deployment info]-& ...
- [iOS]终极横竖屏切换解决方案
[iOS]终极横竖屏切换解决方案 大家的项目都是只支持竖屏的吧?大多数朋友(这其中当然也包括博主),都没有做过横屏开发,这次项目刚好有这个需求,因此把横竖屏相关的心得写成一遍文章供诸位参考. 01.综 ...
- iOS 中各种横竖屏切换总结
iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UI ...
- 【IOS界面布局】横竖屏切换和控件自适应(推荐)
[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...
- iOS开发之判断横竖屏切换
/** * 当屏幕即将旋转的时候调用 * * @param toInterfaceOrientation 旋转完毕后的最终方向 * @param duration 旋转动画所花费的时间 */ ...
- Android APP 简单高效的禁用横竖屏切换
默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...
- Android开发之Activity横竖屏切换生命周期重建问题
当进行横竖屏切换的时候Activity的生命周期会重建,从而导致Activity崩溃等问题,为了避免这一问题,需要在AndroidManifest.xml文件中设置: <activity and ...
- Activity 横竖屏切换
前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...
随机推荐
- ParentWindow属性及其一系列函数的作用——适合于那些不需要父控件管理内存释放的子控件
TWinControl = class(TControl) property ParentWindow: HWnd read FParentWindow write SetParentWindow; ...
- bzoj2006
论将区间和转化为前缀和的重要性这题一旦转化为前缀和就非常明了了一段区间[l,r]的美妙程度就等于s[r]-s[l-1]对于这种无法计算出所有方案而取前k大的题目,我们一般分类别然后利用类别内的单调性用 ...
- hdu-2768-Cat vs. Dog(二分图-最大匹配数)
题意: 有猫C个和狗D个,有V个投票人,每个人喜欢猫讨厌狗或则喜欢狗讨厌猫! 求最多能满足多少投票人. 分析: 两个投票者矛盾的话就连一条边,总数减去最大匹配数/2就是要求的答案 // File Na ...
- Watch OS2.0开发概述
(注:尊重劳动成果,转载请注明出处 http://www.cnblogs.com/xiaochunle/p/4620230.html ) Watch OS 2.0时代 北京时间2015年6月9日,WW ...
- 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1806 题目大意: N个点M条有向边,给一个时间T(2≤n≤10,1≤m≤n(n-1), ...
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
- 【模拟】NEERC15 A Adjustment Office (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 一个N*N的矩阵A,Ai,j=i+j,Q次操作,每次分两种,R r取出第r行还未被取的所有数,并输出和.C c ...
- Nodejs in Visual Studio Code 09.企业网与CNPM
1.开始 CNPM : https://npm.taobao.org/ 2.企业网HTTP代理上网 平时办公在一个大企业网(10.*.*.*)中,使用HTTP代理上网,发现npm命令无法执行. 解决方 ...
- [Locked] Binary Tree Vertical Order Traversal
Binary Tree Vertical Order Traversal Given a binary tree, return the vertical order traversal of its ...
- 利用组策略禁用Oultook 各个版本的缓存模式!
由于缓存模式有些自己特性和企业内的管理策略原因,有些用户不希望使用缓存模式来使用Outlook.我们怎么才能禁用缓存模式呢?请参考如下做法: 首先我们从网站上下载Office 相应的管理adm软件,这 ...