旋转屏的控制 -----

在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如:

[cpp] view plaincopyprint?

  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  2. {
  3. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  4. }

但是在iOS6中,这个方法被废弃了,使用无效。

shouldAutorotateToInterfaceOrientation:

Returns a Boolean value indicating whether the view controller
supports the specified orientation. (Deprecated in
iOS 6.0. Override
the supportedInterfaceOrientations andpreferredInterfaceOrientationForPresentation methods
instead.)

实践后会发现,通过supportedInterfaceOrientations的单独控制是无法锁定屏幕的。

[cpp] view
plain
copyprint?

  1. -(NSUInteger)supportedInterfaceOrientations
  2. {
  3. return UIInterfaceOrientationMaskPortrait;
  4. }

多次实验后总结出控制屏幕旋转支持方向的方法如下:

子类化UINavigationController,增加方法

[cpp] view
plain
copyprint?

  1. - (BOOL)shouldAutorotate
  2. {
  3. return self.topViewController.shouldAutorotate;
  4. }
  5. - (NSUInteger)supportedInterfaceOrientations
  6. {
  7. return self.topViewController.supportedInterfaceOrientations;
  8. }

并且设定其为程序入口,或指定为 self.window.rootViewController

随后添加自己的view controller,如果想禁止某个view
controller的旋屏:(支持全部版本的控制)

[cpp] view
plain
copyprint?

  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  2. {
  3. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  4. }
  5. -(BOOL)shouldAutorotate
  6. {
  7. return NO;
  8. }
  9. -(NSUInteger)supportedInterfaceOrientations
  10. {
  11. return UIInterfaceOrientationMaskPortrait;
  12. }

如果想又开启某个view
controller的全部方向旋屏支持:

[cpp] view
plain
copyprint?

  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  2. {
  3. return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
  4. }
  5. -(NSUInteger)supportedInterfaceOrientations
  6. {
  7. return UIInterfaceOrientationMaskAllButUpsideDown;
  8. }
  9. -(BOOL)shouldAutorotate
  10. {
  11. return YES;
  12. }

从而实现了对每个view controller的单独控制。

顺便提一下,如果整个应用所有view controller都不支持旋屏,那么干脆:

[cpp] view
plain
copyprint?

    1. - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    2. {
    3. return UIInterfaceOrientationMaskPortrait;
    4. }

旋转屏的控制 -----

时间: 2024-08-13 23:52:21

旋转屏的控制 -----的相关文章

【HTML5】用脚本控制交互元素details元素的使用

1.源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Con

通用导出excel(可控制内容)

实体类 package util; import java.sql.Timestamp; public class Book { private int bookId; private String name; private String author; private float price; private String isbn; private String pubName; private Timestamp date; public Book() { } public Book(i

QQ远程协助不能控制win7系统的解决方法

经常碰到一个人说,用QQ远程WIN7等操作系统电脑时,总是点了没有反应,不知道是怎么一回事?其实,这主要是WIN7操作系统在安全管理性方面提高了,要进行设置一下,才可以 当对方使用win7系统的时候,为什么有些时候QQ远程协助控制不了win7的电脑,经常遇到这样的情况,远程连接上了,有些项可以点,有些项点一下就卡死了,点不动了,必须我们经常要用到磁盘管理,当我们点到这个项目的时候对方的电脑画面就卡住了再点鼠标也没有任何反应,这是怎么回事? 经过一番研究,我们发现在控制面板用户帐户里面有一个项目需

os -- 进程的控制

os -- 进程的控制 新建 模板 小书匠 参考 <计算机操作系统>(第四版) 汤小丹等编著 概念引入 进程控制 进程控制是最基本的功能,负责创建进程.结束进程等功能,一般由 OS 内核中的原语来实现 原语 所谓原语,就是由若干条指令组成的,用于完成一定功能的一个过程,算是不可分割的.最基本的操作 Note 接下来原语基本用于所有的操作 操作系统内核 操作系统将一些常用或者运行频率较高的模块(如时钟管理.进程调度等)常驻内存,这些就被称为 OS 内核 两大功能 支撑功能 中断处理 时钟管理 原

rbac 权限控制

RBAC 的控制,大致是通过将角色的权限控制,来控制用户的权限. 需要构建的表为 用户表(user) ,角色表(role),节点表(node),三张主表 , 节点表内记录的是所有的权限和方法. 2张关联表,是为了关联3张数据表的,分别未 角色用户表(user_role),角色权限表(role_node),也可将两张表写成字段分别加入到用户表和权限表内; 废话不多说看下,键表语句如下 用户表: CREATE TABLE `wj_admin` ( `id` int(11) NOT NULL AUTO

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v

汇编语言入门:流程控制

流程控制:顺序,分支,循环 程序计数器PC中存储当前执行的程序在EM中的位置 汇编里面,用比较.跳转实现流程控制. 1.顺序:PC+1(不一定加一,看指令长度) 2.分支循环,直接赋给PC值,执行指定地址的程序 有时候需要程序有一定的流程控制能力,它不是老老实实按照顺序来执行的,中间可能会跳过一些代码 修改PC值,不可用MOV指令,PC是特殊的寄存器,特殊对待,跳转指令修改其值. 跳转指令: 1 ja 大于时跳转 2 jae 大于等于 3 jb 小于 4 jbe 小于等于 5 je 相等 6 j

理解HTC Vive更新——控制相机旋转和位移

本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/72188658 作者:cartzhang 一.写在前面 在HTC的vive 头盔中, 一旦Vive头盔连接都unity游戏中,就会控制所有Camera的旋转和位置. 这对于有需要的控制非头盔相机带来了烦恼. 比方说,上篇博客中,在VR中,对某个特点位置截图,就会由于头盔控制所有相机的旋转, 造成截图不精确和出现偏移. 地址:

机电传动控制读书笔记二(书本内容)

读书内容:<自动化技术中的进给电气传动>第一章的第1.3节:<控制系统指南>的第一章和第二章:Plecs仿真实验结果. 知识要点: <自动化技术中的进给电气传动> 1.对于线性传递环节的实际系统,其输入量的微分的最高阶数m不大于输出量的最高阶数n, 2.在不可调传动系统情况下,在系统稳定状态下,一个接入的负载转矩ML会产生一个角速度为wM的固定偏差.而且在起始t=0的情况下,发生了ML的跃变.并有如下规律: n=m:当出现一个输入量跃变时,输出量也同样出现一个跃变. n