最近在做视频类的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横竖屏切换的一些坑(持续更新)的更多相关文章

  1. iOS 横竖屏切换(应对特殊需求)

    iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UI ...

  2. iOS 横竖屏切换解决方案

    iOS要实现横竖屏切换很简单,不需要使用任何第三方,只需要实现几个方法就可以了. 1.设置系统支持横竖屏[General]->[Targets]-> [Deployment info]-& ...

  3. [iOS]终极横竖屏切换解决方案

    [iOS]终极横竖屏切换解决方案 大家的项目都是只支持竖屏的吧?大多数朋友(这其中当然也包括博主),都没有做过横屏开发,这次项目刚好有这个需求,因此把横竖屏相关的心得写成一遍文章供诸位参考. 01.综 ...

  4. iOS 中各种横竖屏切换总结

    iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UI ...

  5. 【IOS界面布局】横竖屏切换和控件自适应(推荐)

    [IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...

  6. iOS开发之判断横竖屏切换

    /** *  当屏幕即将旋转的时候调用 * *  @param toInterfaceOrientation 旋转完毕后的最终方向 *  @param duration  旋转动画所花费的时间 */ ...

  7. Android APP 简单高效的禁用横竖屏切换

    默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...

  8. Android开发之Activity横竖屏切换生命周期重建问题

    当进行横竖屏切换的时候Activity的生命周期会重建,从而导致Activity崩溃等问题,为了避免这一问题,需要在AndroidManifest.xml文件中设置: <activity and ...

  9. Activity 横竖屏切换

    前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...

随机推荐

  1. Oracle中数字格式的文本化处理

    Select TO_CHAR(123.0233,'FM999,999,90.09') FROM DUAL 1.小数点后面的0指示至少保留1位小数,9表示最多保留两位小数 2.小数点前面的0指示至少保留 ...

  2. 「Poetize7」足球比赛

    描述 Description SJZEZ和TSYZ正在进行一轮足球联谊赛,根据规则,这轮比赛有两场,一场在SJZEZ的主场进行,一场在TSYZ的主场进行.胜负判断标准如下:1.在两场比赛中进球总数较多 ...

  3. BZOJ1636: [Usaco2007 Jan]Balanced Lineup

    1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 476  Solved: 345[ ...

  4. Javascript面向对象编程(二):构造函数的继承 by 阮一峰

    今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...

  5. 数据结构(左偏树):HDU 1512 Monkey King

    Monkey King Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  6. 数据结构:HDU 2993 MAX Average Problem

    MAX Average Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  7. Android为应用在桌面添加一个快捷方式

    Intent addIntent=new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); Parcelable ic ...

  8. poj 1236强连通图缩点

    题目链接:http://poj.org/problem?id=1236 #include <cstdio> #include <cmath> #include <algo ...

  9. Apache HBase 2015年发展回顾与未来展望

    编者按:高可用架构推出 2015 年度回顾系列文章,分享在架构领域具有典型意义的年度案例,本文由张虔熙分享.转载请注明来自高可用架构公众号「ArchNotes」.   张虔熙,Hulu 网,专注于分布 ...

  10. "org.eclipse.wst.validation" has been removed

    导出maven工程遇到的问题,"org.eclipse.wst.validation" has been removed,还以为是工程本身的问题,后来发现是eclipse的问题. ...