动画过渡在横向方向上无法正常工作

2023-11-24

我的应用程序仅支持横向右方向。

我正在尝试转换到视图控制器的视图,但是当它执行过渡动画(例如卷曲)时,视图旋转 90 度(因此,模拟器仍处于横向右方向,但视图显示为旋转) 90 度)。过渡完成后,它会旋转到正确的方向。我的代码如下。

- (IBAction)buttonTouched
{
    MyViewController *aViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];

    [UIView transitionFromView:self.view 
                        toView:aViewController.view 
                      duration:2 
                       options:UIViewAnimationOptionTransitionCurlUp 
                    completion:NULL];
}

视图似乎没有收到“方向已更改”通知,因此它以纵向显示,然后在动画完成后更改为横向。我已经在 IB 中设置了它,以便它全部以横向布局。

编辑:我还尝试将视图控制器添加到自身的 IB 文件并转换到该视图(认为初始化和转换之间可能太接近),但发生了同样的事情。


好吧,主要原因是 self.view (当前“知道”您处于横向状态)正在被一个没有该信息的新视图替换。所以一种想法是将 aViewController.view 作为 self.view 的子视图(假设 aViewController 是不透明的)。啊,你说,但是我失去了transitionFromView 的漂亮动画。好吧,试试这个好处:

[UIView transitionWithView:self.view
                  duration:2 
                   options:UIViewAnimationOptionTransitionCurlUp
                animations:^{
                    [self.view addSubview:aViewController.view];
                } 
                completion:NULL];

如果由于某种原因这对你不起作用,另一种方法是“教导” aViewController.view 它实际上是一个横向视图:

#define DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) / 180.0 * M_PI)
-(void)setNewViewToLandscape:(UIView*)viewObject {
     //assumes self.view is landscape and viewObject is portrait
     [viewObject setCenter:CGPointMake( self.view.frame.size.width/2,self.view.frame.size.height/2)];
     CGAffineTransform cgCTM = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90));
     viewObject.transform = cgCTM;
     viewObject.bounds = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
}

 MyViewController *aViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];
[self setNewViewToLandscape:aViewController.view];

[UIView transitionFromView:self.view 
                    toView:aViewController.view 
                  duration:2 
                   options:UIViewAnimationOptionTransitionCurlUp 
                completion:NULL];

一个额外的小问题是您的 aViewController 正在泄漏,因此您应该将其作为父 viewController 的保留属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动画过渡在横向方向上无法正常工作 的相关文章

随机推荐

  • Android webkit 浏览器中的宽度不正确

    我注意到 Android 默认浏览器上有一个问题 100 宽度实际上可能会超出屏幕边缘 这是一个最小的测试用例 div class separator width 100 style border 2px padding 2px nbsp
  • 如何编写一个返回仅存在于类中的类型的成员函数?

    我实际上正在用 C 实现一个双向链表 这是某种 MWE namespace mynamespace template
  • 哪里有可靠的注册表项来查找 Excel 2007 的安装位置?

    哪里有可靠的注册表项来查找 Excel 2007 的安装位置 怎么样 HKEY LOCAL MACHINE SOFTWARE Microsoft Office X 0 Common InstallRoot 其中包含一个名为 Path 的键
  • django-rest-framework:如何序列化已包含 JSON 的字段?

    我对 django rest framework 很陌生 所以需要一些帮助 我有一个带有 TextField 的对象 该对象是包含 JSON 的字符串 我正在使用 django rest framework 将整个对象序列化为 JSON 然
  • 为什么禁止内联脚本(内容安全策略)?

    我想知道规范中的引用 https dvcs w3 org hg content security policy raw file tip csp specification dev html 为了获得最大的好处 作者需要将所有内联脚本和样式
  • Keras:制作神经网络来查找数字的模数

    我是一位经验丰富的 Python 开发人员 但在机器学习方面完全是新手 这是我第一次尝试使用 Keras 你能告诉我我做错了什么吗 我正在尝试制作一个神经网络 它接受二进制形式的数字 并在除以 7 时输出其模数 我的目标是执行一个非常简单的
  • HTTP重定向代码之间的区别

    我不清楚各种 HTTP 3XX 重定向代码之间的差异 是的 我已经阅读了规范 但标准与实际实践之间似乎存在一些差异 The 301重定向代码似乎足够清楚 这意味着资源已永久移动到另一个 URI 并且将来的请求应使用该 URI And the
  • IIS HTTP 到 HTTPS 相对重定向

    我最近为我的网站获得了 SSL 证书 并希望将所有流量重定向到 HTTPS 我已经拥有了一切要去的地方https mydomain com但如果有人进来http mydomain com anotherpage它会删除其他页面 只将用户带到
  • 是否有一种相对简单的方法可以在 C# 或 PowerShell 中完成 CD 或 DVD?

    首先 对术语进行一些澄清 经过最终确定 我的意思并不是要结束会议 而是要结束会议 我的意思是 将导出内容写入 CD 或 DVD 时 信息将无法再通过通常的方式 Roxio Nero Windows 资源管理器等 添加到其中 我对此做了相当多
  • 获取字符串中某个索引之后第一个检测到的空格的索引

    在要格式化的字符串中 主要是用不同的符号替换字符以在 UI 上进行渲染测试 我必须检测 然后跳过此 字符中的第一个空格的所有字符 并且必须对字符串中的所有实例重复该操作 E g abcd 1 s efgh 2 d ijkl在这个字符串中 我
  • 为什么 memcpy() 和 memmove() 比指针增量更快?

    我正在复制 N 个字节pSrc to pDest 这可以在单个循环中完成 for int i 0 i lt N i pDest pSrc 为什么这比memcpy or memmove 他们使用什么技巧来加快速度 因为 memcpy 使用字指
  • 假执行Powershell脚本

    在 Fake 构建自动化工具中执行 Powershell 脚本的最佳方法是什么 我觉得这个问题应该有一个明显的答案 但一直没能通过搜索找到任何东西 正如您在评论中提到的 使用PowerShell类使这变得非常容易 r FakeLib dll
  • 如何在反序列化期间以编程方式选择构造函数?

    我想反序列化System Security Claims Claim对象按以下方式序列化 Issuer LOCAL AUTHORITY OriginalIssuer LOCAL AUTHORITY Type http my org ws 2
  • 如何标准化 Lucene 分数?

    我需要将 Lucene 分数标准化为 0 到 1 之间 例如 随机查询返回以下分数 8 864665 2 792687 2 792687 2 792687 2 792687 0 49009037 0 33730242 0 33730242
  • JavaScript 中的“变量 = 变量 || {}”是什么意思 [重复]

    这个问题在这里已经有答案了 变量的初始化代表什么 var variable variable 应该如何以及何时使用 该行代码执行以下操作 IF variable未定义 或具有错误值 THEN将其设置为空对象 ELSE什么都不做 从技术上讲
  • java.lang.AbstractMethodError:javax.ws.rs.core.UriBuilder.uri

    我尝试启动应用程序但使用Tomcat 7我有一个这样的例外 我认为这可能是Maven dependency 但我确定 如果有人知道发生了什么事 请回答 例外 message Servlet execution threw an except
  • C++ 按常量引用传递并按常量引用返回

    我想了解退货是否有任何好处const参考 我有一个阶乘函数 通常如下所示 unsigned long factorial unsigned long n return n 0 1 n factorial n 1 我假设当我们经过时性能会有所
  • swift/ios 在后台刷新应用程序数据

    我正在编写一个 iOS Swift 应用程序 它每 X 分钟从 REST 服务读取数据并相应地更新 UI 现在我希望当应用程序置于后台时 会以 X 分钟的间隔调用一个任务 从 REST 服务读取数据 并且如果刚刚读取的数据满足给定条件 则显
  • 我应该将实体框架视为非托管资源吗?

    我正在使用一个在其构造函数中使用 EF 引用的类 我已经实施了IDisposable 但我不确定是否需要析构函数 因为我不确定是否可以将 EF 分类为非托管资源 如果 EF 是托管资源 那么我不需要析构函数 所以我认为这是一个合适的示例 p
  • 动画过渡在横向方向上无法正常工作

    我的应用程序仅支持横向右方向 我正在尝试转换到视图控制器的视图 但是当它执行过渡动画 例如卷曲 时 视图旋转 90 度 因此 模拟器仍处于横向右方向 但视图显示为旋转 90 度 过渡完成后 它会旋转到正确的方向 我的代码如下 IBActio