在我的应用程序中,我使用了备用景观界面策略(将您的景观 View 呈现为模态)。我还使用导航 Controller 进行转换,这会导致以下问题:我不知道如何从横向方向正确地推送/弹出。
我提出了以下解决方案,但有人可能知道更好的解决方案。假设只需要处理两个 View 。我们称它们为 AP、AL、BP、BL,其中第二个字母代表方向。我们从一个内置 AP 的导航 Controller 开始。要在 AP 和 BP 之间移动,我们只需推/弹出。为了从 AP 到 AL,我们提供了一个内置 AL 的模态导航 Controller 。为了在 AL 和 BL 之间移动,我们在 second 导航 Controller 中推送/弹出。现在从 BP 到 BL,我们弹出没有动画,并呈现一个模态导航 Controller ,其中 BL 位于 AL 之上。为了从 BL 转到 BP,我们关闭模态导航 Controller 并插入 BP 不带动画。
好像有点丑,但也不算太差。谁能想到更好的东西?
提前致谢!
最佳答案
您是否出于某种原因需要在单独的 Controller 中将横向显示为模态?当我有两个完全不同的纵向和横向 View 时,我会随着它们在旋转过程中拉伸(stretch)而在它们之间淡化。
这允许在两个方向上呈现截然不同的内容、它们之间的良好过渡以及在一个 Controller 下共享代码。
这是一些代码。当我们改变方向时,我们的 UIViewController 将在 portraitView 和 landscapeView 之间切换。
portraitView 和 landscapeView 都是 UIViewController 的 View 的子级。层次结构如下所示:
UIViewController
|
- view
|
|- portraitView
|
|- landscapeView
两者都有它们的autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight 以确保它们在 View Controller 旋转时拉伸(stretch)。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if( orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight )
{
[UIView animateWithDuration:duration
animations:^
{
//Fade the landscape view over the top of the
//portrait view as during rotation
landscapeView.alpha = 1.0f;
}
completion:^(BOOL finished)
{
//Hide the portrait view when landscape is fully
//visible
portraitView.alpha = 0.0f
}];
}
else
{
//Show the portrait view (underneath the landscape view)
portraitView.alpha = 1.0f;
[UIView animateWithDuration:duration
animations:^
{
//Fade out the landscape view to reveal the portrait view
landscapeView.alpha = 0.0f;
}];
}
}
您的控件和 subview 将与相应的 View 一起淡入淡出和停用,让您拥有完全不同的内容。我最近使用它在改变方向时在两个不同的背景图像之间淡入淡出。效果很流畅。
您现在可以创建两个 View Controller ,A 和B,它们分别管理两个 View ,如上所述。然后,您可以像往常一样简单地推送 View Controller ,而不必担心在旋转期间管理 UINavigationController 的 View Controller 堆栈。
关于iphone - UINavigationController 和备用景观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6091230/
调用 Maven 构建来指定替代文件来代替标准 pom.xml 文件名时是否有参数? 基本上,我需要使用各种配置来运行我的 Maven 构建的测试目标。现在我必须使用外部脚本来使用此配置更新标准 po
基本上我喜欢 PHP 和 SQL 的开发方面。目前我正在处理一个可能需要 MYSQL 复制功能的项目。下面提到的是我的一些要求,只是想知道是否有人可以提供他们的专家建议和提示,以防根据我的需要这是正确
我目前正在做一个教科书中的项目,我遇到了一个 while 循环的模糊问题。课本上的代码如下; while(getImage().getWidth(applet) <= 0); double x = a
如何全局更改Maven的.m2目录的位置? Maven使用${user.home}/.m2进行设置,存储库缓存等。 我知道我可以: 指向存储库缓存的其他目录(通过更改全局配置文件中的localRepo
我正在开发以下代码,一个备用 while 循环: _while = (cond, act) => cond && act() & _while(cond, act) 在这种情况下,act() 旨在每次
到目前为止,我读过的每个教程都说包名应该与您的域相反。但是,如果我没有域并想在市场上发布应用程序怎么办?我可以使用什么备用包命名约定? 最佳答案 随心所欲;这是任意的。 包命名就是为了防止冲突和创建功
您好,我们有一个包含大量 bean、JSP 等的项目。迫切需要在我们的环境中执行自动化测试(我们使用 Maven)。现在,我们可以轻松地为数据库项目层编写测试,为我们实现的各种安全实用程序编写测试。但
这更像是一个 CSS 问题,但我会在此处添加它,因为任何下划线开发人员都可能遇到过它。我有一个索引页面布局: ... ... ... ... 我想用替代文章的类 xyz 定位 div
我正在创建一个 DOM 元素,如下所示; var imgEle = document.createElement('img'); imgEle.src = imgURL;
在应用程序中,当创建特殊类型的对象时,我需要为它们中的每一个生成一个唯一标识。这些对象是通过工厂创建的,并且很有可能在“批量”操作中创建。我意识到框架中的“随机”毕竟不是那么“随机”,所以我尝试按如下
我正在寻找每日备份 sqlite 数据库的正确解决方案。数据库大约 5GB,有规律地增长,每秒接收新数据,并且处于 WAL 模式。该服务是 24/7 全天候服务,因此在备份期间无法停止任何操作。将数据
我正在设置一个多节点 hadoop 集群,并有一个节点之间无密码 SSH 的共享 key 。我将文件命名为 ~/.ssh/hadoop_rsa 并且可以使用 ssh -i ~/.ssh/hadoop_
我的结构如下: blah stuff 它会在整个动态页面中重复几次。我想用两种颜色交替 div 类“post”的背景颜色,但 CSS 的第 nth-child 伪类似乎只适用于直接顺序
例如 Jython 的版本是 2.5.1,这是否意味着它在 2.5.1 版本时与 cpython 语法并行保真? 最佳答案 通常是的,但从技术上讲,没有什么可以阻止替代实现选择他们想要的任何版本号。
我知道 h1 标签对 SEO 很重要,所以我所有的标题都是 H1(太棒了!) 现在,我需要在某些页面上有一个稍微不同的标题(作为文本的第一行)。 通常,我只是将 h1 复制为 h2 并交替使用。 问题
可以为 Perforce 推荐一个类似 P4Win 的替代方案,希望它支持搁置并且可能是开源的?不需要跨平台,只要 Windows 就可以了。 我这么问是因为我不喜欢新的 P4V 界面,而且我发现 P
大家好,提前寻求帮助:我正在尝试将第二个标题添加到自定义临时页面,并在该备用标题中添加一个不同于 style.css 的备用 css 文件。 我像这样从 cat 模板页面调用了自定义 header
我在这里遇到了一些麻烦。我想在鼠标悬停在 div 之后显示图像。 HTML: CSS: #testmouseover { left: -9px; top: -9px;
这个问题在这里已经有了答案: How do I switch my CSS stylesheet using jQuery? (5 个答案) 关闭 9 年前。
有人知道是否有一些用于 Direct X 的替代 API,我的意思是只是 GUI 库!没有像我们在 DXUT 中那样重新实现 Direct X。 最佳答案 对于 Windows 10 上的 Windo
我是一名优秀的程序员,十分优秀!