Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >iOS:旋转iphone后,从仅支持纵向模式的视图控制器以横向方式呈现视图控制器

iOS:旋转iphone后,从仅支持纵向模式的视图控制器以横向方式呈现视图控制器
EN

Stack Overflow用户
提问于 2012-10-21 21:40:45
回答 2查看 4.4K关注 0票数 2

我有一个应用程序总是以纵向模式呈现(在Xcode项目的总结中,只支持纵向方向)。

现在我想要做的是,当我使用应用程序时,从应用程序的任何视图控制器,如果我在横向向右旋转设备,应用程序会在横向向右显示一个视图控制器( ARViewController.m ),事实上,向横向向右旋转是显示ARViewController.m的触发器。但我的经验是,由于第一个视图控制器只支持纵向,即使我将设备定位在横向右侧,我想从第一个视图控制器(ARViewController.m)呈现的视图控制器也是纵向的,而不是横向右侧。

即使我在第二个视图控制器(ARViewController.m)中写下这段代码,它也不会自动旋转(这个视图控制器可以在任何方向上显示):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ 
  return YES;
}

在第二个视图控制器(ARViewController.m)出现后,我必须旋转iphone一次,以使一切井然有序。

下面是我如何从第一个视图控制器调用第二个视图控制器(ARViewController.m):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ARViewController *arVC = [[ARViewController alloc] initWithNibName:@"ARViewController" bundle:nil];
[self presentModalViewController:arVC animated:YES];

我在"ViewController.m“中调用它,它被定义为AppDelegate.m中的rootViewController

这是我第一次做这样的事情,我一直在寻找解决方案,但仍然是同样的问题。这方面有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-23 10:47:23

我终于解决了这个问题,我想还有其他选择,但这一个很好用:

事实上,我只保留了肖像中的方向限制。然后,当我在横屏中向右或向左转动手机时,我会以模态方式调用我的ARViewController,但在加载它之前,我会强制这个视图控制器在横屏模式下(在viewWillAppear中)进行适当的旋转,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self transformView2ToLandscape];}

-(void) transformView2ToLandscape {

NSInteger rotationDirection;
UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation];

if(currentOrientation == UIDeviceOrientationLandscapeLeft){
    rotationDirection = 1;
}else {
    rotationDirection = -1;
}

CGAffineTransform transform = [arController.viewController.view transform];
transform = CGAffineTransformRotate(transform, degreesToRadians(rotationDirection * 90));
[arController.viewController.view setTransform: transform];}

编辑:在Swift 4

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    transformViewToLansdcape()
}

func transformViewToLansdcape(){
    var rotationDir : Int
    if(UIDeviceOrientationIsLandscape(UIDevice.current.orientation)){
        rotationDir = 1
    }else{
        rotationDir = -1
    }
    var transform = self.view.transform
    //90 for landscapeLeft and 270 for landscapeRight
    transform = transform.rotated(by: (rotationDir*270).degreesToRadians)
    self.view.transform = transform
}

extension BinaryInteger {
    var degreesToRadians: CGFloat {
        return CGFloat(Int(self)) * .pi / 180
    }
}
票数 5
EN

Stack Overflow用户

发布于 2012-10-22 00:57:28

我发现,首先,阻止整个应用程序旋转的是项目汇总表。您应该做的是取消选择项目摘要表中的限制&只需在每个UIViewController中按您希望的方式放入一个方法。在您已有的UIViewController中,使该方法可用于横向方向并实现该方法

[UIViewControllerSubclass willRotateToInterfaceOrientation:<interfaceOrientation> duration:<NSTimeInterval>]

苹果的说法:

willRotateToInterfaceOrientation:持续时间:

在用户界面开始旋转之前发送到视图控制器。

  • (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

参数

toInterfaceOrientation

用户界面的新方向。可能的值在UIInterfaceOrientation中描述。

持续时间

挂起循环的持续时间,以秒为单位。

讨论

子类可以重写此方法,以便在轮换之前立即执行其他操作。例如,可以使用此方法禁用视图交互、停止媒体回放或临时关闭昂贵的图形或实时更新。您还可以使用它将当前视图交换为反映新界面方向的视图。调用此方法时,interfaceOrientation属性仍包含视图的原始方向。

无论您的代码是执行一步还是两步循环,都会调用此方法。

因此,这似乎就是您正在寻找的方法。只需实现这一点,并将您的视图调用代码放入其中&它应该可以工作。(另外,将其中一个放在显示的视图中,以便在旋转回来时返回)

此外,您应该考虑不以模态的方式呈现视图控制器,因为它正在以任何方式旋转,并且很明显显示正在改变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13002477

复制
相关文章
Elasticsearch 聚合数据结果不精确,怎么破?
请教一个问题,ES 在聚合的时候发生了一个奇怪的现象聚合的语句里面size设置为10和大于10导致聚合的数量不一致,这个size不就是返回的条数吗?会影响统计结果吗?dsl语句摘要(手机敲不方便,双引号就不写了):
铭毅天下
2020/07/24
3.5K0
Elasticsearch 聚合数据结果不精确,怎么破?
ES 基于查询结果的聚合
在了解本文内容前,必须先了解ES DSL查询和ES 聚合查询,ES基于查询结果的聚合分为两种,第一种类似与关系型数据库中的Having语法,第二种类似于关系型数据库中先where在group by的语法,本文主要分析先查询后聚合场景
郑小超.
2022/09/21
1.4K0
[Elasticsearch] ES聚合场景下部分结果数据未返回问题分析
在对ES某个筛选字段聚合查询,类似groupBy操作后,发现该字段新增的数据,聚合结果没有展示出来,但是用户在全文检索新增的筛选数据后,又可以查询出来, 针对该问题进行了相关排查。
awwewwbbb
2021/12/30
1.7K0
[Elasticsearch]  ES聚合场景下部分结果数据未返回问题分析
Elasticsearch聚合学习之四:结果排序
本文是《Elasticsearch聚合学习》系列的第四篇,在前面的实战中,聚合的结果以桶(bucket)为单位,放在JSON数组中返回,这些数据是没有排序的,今天来学习如何给这些数据进行排序;
程序员欣宸
2019/05/27
7.8K0
[793]mysql表分组后取每组前几条数据
需求:按照p_code字段对product表进行分组并取每组的前两条数据 SQL语句:
周小董
2020/05/07
6.7K0
[793]mysql表分组后取每组前几条数据
Jmeter 测试结果分析之聚合报告简介
对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量.
授客
2019/09/11
2.1K0
Jmeter 测试结果分析之聚合报告简介
oracle行转列函数 聚合_oracle查询结果行转列
2.使用 listagg() WITHIN GROUP () 将多行合并成一行(比较常用)
全栈程序员站长
2022/10/04
1.4K0
oracle行转列函数 聚合_oracle查询结果行转列
团队管理 - 以结果为导向
结果导向是ISO质量管理体系、绩效管理理论中的基本概念和核心思想之一,即强调经营、管理和工作的结果(经济与社会效益和客户满意度),经营管理和日常工作中表现出来的能力、态度均要符合结果的要求,否则没有价值和意义。(来源百度百科)
十毛
2022/08/23
6210
Elasticsearch聚合学习之五:排序结果不准的问题分析
版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/90319399
程序员欣宸
2019/05/26
2.8K0
PHP中把数据库查询结果输出为json格式
可以看到,直接进行json_encode();编码,是将三个数组分别转为了json格式,而且两端会出现中括号!!还有另外一种写法
Yiiven
2022/12/15
1.9K0
ThinkPHP5.1 子查询-使用 Group 获取每组最新数据
( 该查询方式利用了PHP的生成器特性,可以大幅减少大量数据查询的内存占用问题 )
泥豆芽儿 MT
2022/01/05
2.3K0
ThinkPHP5.1 子查询-使用 Group 获取每组最新数据
PHP如何将数据库查询结果输出为json格式
近期做接口的时候需要做到一个操作,将数据库查询结果输出为json格式方便程序调用。 于是在网上看到了两种解法,就此分享出来,供大家学习以及自己日后进行参考。 可将其封装成专门将数据转换成json格式的接口
吃猫的鱼Code
2023/02/02
3.3K0
聚合数据是什么东西?聚合数据有哪些服务?
现在社会是属于大数据的时代,相信大家都是听说过大数据这个词的,通过大数据我们可以知道很多很多的信息,因此数据对于互联网时代是非常重要的东西,现在的各行各业都需要数据的支持,而现在相关的厂商将人们需要的众多数据聚合在一起,为大家提供更加方便的了解数据方式,被称为聚合数据,那么聚合数据是什么东西?聚合数据有哪些服务?下面小编就为大家带来详细介绍一下相关的内容。
用户8739990
2021/06/25
2.9K0
前端测试题: 下面Symbol运算结果,结果为true的是?
symbol 是一种基本数据类型 (primitive data type)。Symbol()函数会返回symbol类型的值.
舒克
2020/03/12
7690
微服务-数据聚合CQRS
微服务经常是按业务维度划分多个服务(当然还有其他各种考虑维度), 划分为多个维度后, 好处自然很多, 其中也会有一些问题, 比如我们讲的数据依赖问题
用户2825413
2020/09/18
1.3K0
微服务-数据聚合CQRS
用Turbine聚合监控数据
Hystrix Dashboard实现了数据监控,但是只能看到单个应用内的服务信息,Netflix提供了Turbine,可以把多个"hystrix.stream"的内容聚合为一个数据源供Dashboard展示。
星哥玩云
2022/09/15
3620
Pandas进阶之数据聚合
---- 概述 在之前的前面几篇博客中,详细介绍了Pandas的一些基础和高级特性。今天博主继续介绍一个Pandas的进阶之数据聚合。 数据聚合 pandas可以支持像sql语句那样,对数据进行聚合操作。比如:groupby,combine等等。 GroupBy技术 我们可以将一个Pandas的DataFrame结构进行拆分-应用-合并操作。比如: In [6]: df = DataFrame({'key1':'aabba','key2':["one","two","one","two ...: "
吕海峰
2018/04/03
9840
MySQL中用快速为select结果加序号
set @a=0;select @a:=@a+1,user,host from mysql.user;
莫晓东do
2018/07/17
5.4K1
Java中fastjson的toJSONString结果为空{}
1.背景 1.1 一个实体类 public class User { @JSONField(name = "ID") private String id; private String name; private String age; @JSONField(name = "LIKE_FOOD") private String likeFood; private Job job; public User(String id, String n
玖柒的小窝
2021/09/14
4.8K0
互联网数据聚合
我们经常需要从互联网上获取数据,在很多情况下,你需要的是特定信息,或者说是符合某些条件的信息,比如:
四火
2022/07/15
4500
互联网数据聚合

相似问题

groovy:使用compileStatic将接口实现列表转换为映射

116

转换Groovy映射

10

将集合转换为映射groovy

20

将接口{}转换为映射

10

MongoDB:将接口映射到实现

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文