iOS将单个控制器设为横屏、页面横屏

最近项目中拍照页面需要设置为横屏,需求如下

进入拍摄页面后将页面强制设为横屏,拍照结束后回复竖屏。 简述为:A->B(横屏)

屏幕快照 2016-07-29 下午5.50.02.png

1. 首先在AppDelegate中添加一个公开属性restrictRotation并添加一个方法、该方法是是否允许屏幕转向
/** 允许转向 */
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if(self.restrictRotation == YES)
        return UIInterfaceOrientationMaskLandscapeRight;
//        return UIInterfaceOrientationMaskLandscape;
    else
        
        return UIInterfaceOrientationMaskPortrait;
}
2. 在需要设置横屏的页面中添加下列方法
/**
 *  设置屏幕旋转
 *
 *  @param restriction yes or no
 */
- (void)restrictRotation:(BOOL) restriction {
    AppDelegate* appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
    appDelegate.restrictRotation = restriction;
    
}

在进入页面时允许屏幕旋转,并设置旋转的方向,代码如下

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
 
    [self restrictRotation:YES];
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
    
}
// 离开时禁止旋转并将屏幕方向设为竖屏
-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [self restrictRotation:NO];
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

}

实现了将单个控制器设为横屏的功能。 但是,新的问题出现了:当B控制器返回A时,A控制器页变也为横屏(需要将手机转向才能恢复) 解决办法很简单: 在A控制器的-(void)viewWillAppear:(BOOL)animated方法中添加,再次设为竖屏即可

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王大锤

iOS 解决汉字联想输入,导致字数限制失效的问题

2893
来自专栏非著名程序员

基础篇章:关于 React Native 之 Modal 组件的讲解

(友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) Modal是模态视图,它的作用是可以用来覆盖...

2567
来自专栏青玉伏案

iOS开发之微信聊天页面实现

  在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写。在聊天页面中主要...

1.2K7
来自专栏编程之旅

iOS开发——UINavigationBar中踩过的坑

自从升级了Xcode8,以及在做iOS10的适配工作中,我发现在NavigationBar这个控件中,有了一个小小的坑。

2093
来自专栏Rindew的iOS技术分享

iOS初来乍到,你如何开始第一个封装类?

2284
来自专栏每日一篇技术文章

SceneKit_入门06_行为动画

a.移动相对于当前位置 + (SCNAction *)moveByX:(CGFloat)deltaX y:(CGFloat)deltaY z:(CGFloat...

1631
来自专栏一“技”之长

iOS开发封装一个可以响应超链接的label——基于RCLabel的交互扩展

        iOS系统是一个十分注重用户体验的系统,在iOS系统中,用户交互的方案也十分多,然而要在label中的某部分字体中添加交互行为确实不容易的,如果...

971
来自专栏Alice

绘图quartz之加水印

实现在图片上加一个水印  并存在document的路径下  同时在手机相册中也存一份 //首先开启imageContext找到图片     UIGraphics...

2136
来自专栏向治洪

React Native项目实战之搭建美团个人中心界面

在很多app应用型APP中,个人中心往往会单独出一个模块,而对于刚入门React Native的朋友来说,怎么去实现一些静态的页面,并且怎么着手实现,怎么分层,...

4126
来自专栏ShaoYL

iOS-UI控件之UIButton

3086

扫码关注云+社区

领取腾讯云代金券