iOS:手机横屏时,按下横屏视图上的导航条“返回”按钮后,切换为另一个竖屏视图
2014-03-11 21:38
477 查看
验证了很多网上介绍的方法,基本上分为两类:
方法一:旋转视图,然后重新绘画view;
方法二:使用一个已经被apple放弃的私有API函数”setOrientation”(详见参考资料),实现旋转视图;
(1)方法一的实例:
调试结果:虽然实现了切换为竖屏,但是视图已经偏移到手机界面外了。实验了很多次,都没有能够调试出想要的效果。
(2)方法二的实例:
备注:由于需要调用方法“objc_msgSend”,故需要包含下面的头文件:
#import <objc/message.h>
调试结果:调试一次,就能实现需求。方法二的风险:因为调用了apple的一个私有API,可能在APP上架apple store被审核不通过(备注:有待实际验证)。
后记:为什么apple不提供一个官方的方法呢?害得我为了实现这么一个简单的需求,到处搜罗实现方法!
方法一:旋转视图,然后重新绘画view;
方法二:使用一个已经被apple放弃的私有API函数”setOrientation”(详见参考资料),实现旋转视图;
(1)方法一的实例:
[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait animated: YES]; self.navigationController.view.transform = CGAffineTransformIdentity; self.navigationController.view.transform = CGAffineTransformMakeRotation(M_PI*2); self.navigationController.view.bounds = CGRectMake(self.navigationController.view.bounds.origin.x, self.navigationController.view.bounds.origin.y, self.view.frame.size.height, self.view.frame.size.width);
调试结果:虽然实现了切换为竖屏,但是视图已经偏移到手机界面外了。实验了很多次,都没有能够调试出想要的效果。
(2)方法二的实例:
// Force main view to Portrait if(UIDeviceOrientationIsLandscape(self.interfaceOrientation)) { if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) { objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationPortrait); } }
备注:由于需要调用方法“objc_msgSend”,故需要包含下面的头文件:
#import <objc/message.h>
调试结果:调试一次,就能实现需求。方法二的风险:因为调用了apple的一个私有API,可能在APP上架apple store被审核不通过(备注:有待实际验证)。
后记:为什么apple不提供一个官方的方法呢?害得我为了实现这么一个简单的需求,到处搜罗实现方法!
相关文章推荐
- [IOS]iphone开发之横屏与竖屏在不同视图之间的切换
- [IOS]iphone开发之横屏与竖屏在不同视图之间的切换
- [iOS]关于iOS中界面视图横屏/竖屏切换的问题总结
- 【ios】 iphone开发之横屏与竖屏在不同视图之间的切换
- 【ios】 iphone开发之横屏与竖屏在不同视图之间的切换
- iOS横屏、竖屏切换
- 手机横屏切换竖屏导致捕鱼充值界面崩溃
- iphone开发之横屏与竖屏在不同视图之间的切换
- iOS开发:点击系统的返回按钮,返回到指定的视图
- 手机屏幕的横屏竖屏的切换与判断
- iOS,导航条自定义返回按钮后失去侧滑功能完美解决方案
- android 手机屏幕横屏竖屏切换
- iOS 全局竖屏 单个viewcontroller点击按钮支持横屏
- iOS强制切换横屏、竖屏
- iOS分享短信导航条上白色,无取消按钮,无法返回应用
- 按钮点击切换横屏和竖屏
- iOS 更改导航条上返回按钮的标题
- iOS 隐藏导航条左边返回按钮
- iOS开发 点击某处横屏竖屏切换
- iOS 引导页以及启动页 点击按钮进入首页 Window根视图窗口的切换