使用 UIViewControllerContextTransitioning “从视图控制器”消失

2023-11-25

我遇到了一个问题,我在下面进行了描述。

我在用UIViewControllerContextTransitioning用于自定义过渡。

我有 2 个视图控制器,第一个视图控制器和第二个视图控制器。

现在我想在第一个视图控制器上添加第二个视图控制器并带有动画。我已经实现了,现在第二个视图控制器是透明的,所以我们可以在第二个视图控制器下面看到第一个视图控制器。

但我看不到第一个视图控制器,并且我只能看到第二个视图控制器下面的黑屏。

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
    self.transitionContext = transitionContext;
    if(self.isPresenting){
        [self executePresentationAnimation:transitionContext];
    }
    else{
       [self executeDismissalAnimation:transitionContext];
    }
  }

-(void)executePresentationAnimation:(id<UIViewControllerContextTransitioning>)transitionContext{
     UIView* inView = [transitionContext containerView];
     UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

     UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

     CGRect offScreenFrame = inView.frame;
     offScreenFrame.origin.y = inView.frame.size.height;
     toViewController.view.frame = offScreenFrame;

    toViewController.view.backgroundColor = [UIColor clearColor];
    fromViewController.view.backgroundColor = [UIColor clearColor];
    inView.backgroundColor = [UIColor  clearColor];
    [inView insertSubview:toViewController.view aboveSubview:fromViewController.view];
     // [inView addSubview:toViewController.view];
    CFTimeInterval duration = self.presentationDuration;
    CFTimeInterval halfDuration = duration/2;

    CATransform3D t1 = [self firstTransform];
    CATransform3D t2 = [self secondTransformWithView:fromViewController.view];

    [UIView animateKeyframesWithDuration:halfDuration delay:0.0 options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{

    [UIView addKeyframeWithRelativeStartTime:0.0f relativeDuration:0.5f animations:^{
        fromViewController.view.layer.transform = t1;
    }];

    [UIView addKeyframeWithRelativeStartTime:0.5f relativeDuration:0.5f animations:^{
        fromViewController.view.layer.transform = t2;
    }];
    } completion:^(BOOL finished) {
    }];


    [UIView animateWithDuration:duration delay:(halfDuration - (0.3*halfDuration)) usingSpringWithDamping:0.7f initialSpringVelocity:6.0f options:UIViewAnimationOptionCurveEaseIn animations:^{
        toViewController.view.frame = inView.frame;
    } completion:^(BOOL finished) {
        [self.transitionContext completeTransition:YES];
    }];
}

When [self.transitionContext completeTransition:YES];调用后,突然第一个视图控制器消失,第二个视图控制器下方显示黑屏。

有人有想法吗? 谢谢。


我在这里遇到了同样的问题 – 看起来像是 iOS 8 中的一个错误。我已经提交雷达.

I used Reveal屏幕变黑后检查视图层次结构。钥匙UIWindow完全是空的——根本没有视图层次结构!

Reveal'd

我玩了一下,看起来对于简单的情况有一个简单的解决方法。您只需重新添加toViewController的视图作为关键窗口的子视图:

transitionContext.completeTransition(true)
UIApplication.sharedApplication().keyWindow!.addSubview(toViewController.view)

我已经检查过了,钥匙窗口的rootViewController仍然正确设置,所以没关系。我不确定如果您从已呈现的模态控制器中呈现控制器会发生什么,因此对于更复杂的情况,您必须进行试验。

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

使用 UIViewControllerContextTransitioning “从视图控制器”消失 的相关文章

  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • 从按钮执行 Segue 时应用程序冻结

    我的故事板中有一个按钮 它呈现一个带有模式序列的视图控制器 每次按下此按钮时 应用程序都会冻结 没有崩溃 也没有错误消息 prepareForSegue被调用 所有应该存在的视图控制器都在代码中prepareForSegue 但它们不会出现
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 用户验证 Facebook 后未调用应用程序打开 Url 方法

    我已将 ios 应用程序中的 facebook 升级到 3 0 并使用提供的代码https developers facebook com docs howtos login with facebook using ios sdk http
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 如何在没有 SDK 的情况下在 Objective C 中为 S3 创建预签名 URL?

    我正在构建一个 mac 应用程序not使用 AWS iOS 开发工具包 我尝试构建的 GET 请求应遵循以下通用格式 Authorization AWS AWSAccessKeyId base64 hmac sha1 VERB n CONT
  • UIView animateWithDuration:delay: 工作很奇怪

    我在使用 iPhone 动画块时遇到了一个奇怪的问题 这段代码 UIView animateWithDuration 2 delay 0 options 0 animations void controller setBackgroundC
  • watchOS 错误:控制器接口描述中的未知属性

    我将 WKInterfacePicker 添加到情节提要中 并将其连接到界面控制器中的 IBOutlet 运行应用程序时 它在控制台中显示一条错误消息 控制器的接口描述 watchPicker 中的未知属性 Code interface I
  • 在 appdelegate 中呈现多个模态视图

    我想在应用程序收到 application UIApplication application didReceiveRemoteNotification NSDictionary userInfo 中的每个推送消息后呈现一个 modalvi
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

    如果我使用自定义 UITableViewCell 是否需要设置 heightForRowAtIndexPath 在我的 NIB 中 我已经设置了单元高度 当我覆盖 heightForRowAtIndexPath 时 单元格的内容不会出现 即
  • 编码时捕获 NS_AVAILABLE_IOS

    我知道如何更改支持的最低操作系统IPHONEOS DEPLOYMENT TARGET 我目前正在 Xcode 4 5 下进行开发并使用 iOS 6 0 SDK 我想做的是找到一种方法 每当我使用标记的代码时在编译中抛出警告 NS AVAIL
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 如何为 UIImageView 随机化器实现滑动手势

    我一直在浏览大量的教程和问题 但似乎找不到我要找的东西 我有一种感觉 我只是错过了一个简单的步骤 我仍在学习诀窍 所以请承受和我一起做这个 我正在 xcode 4 3 3 上制作图像随机化器 并且我已经能够使用按钮来随机化图像 但我希望它能
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 创建接受文件(流)的 Web 服务不需要其他参数

    我有一个文件想要上传到 Web 服务 但它需要额外的参数 因此我创建了一些带有关联名称 值对的隐藏字段以推送到服务器请求 但问题在于服务的定义 Error 合约 IFormServices 中的操作 NewImage 具有多个请求正文参数
  • Puppeteer Chrome 由自动化测试软件控制

    我尝试了很多关于这个问题的答案 其中一些已被弃用 我想删除 Puppeteer Chrome 正在由自动化测试软件控制 建议 我的配置是 const args no sandbox enable logging disable infoba
  • 如何消除 angular-cli 站点中的渲染阻塞?

    跑步后ng build prod我可以进入我的index html在新创建的 dist 文件夹中添加文件async属性到捆绑的脚本标签以防止它们被阻塞 这有助于提高网站速度 但偶尔会导致网站崩溃 中有一个选项吗angular cli jso
  • 小部件中的 jQuery

    我想在 JS 库上使用 jQuery 该库可以添加到随机网站 这些网站可能已经使用也可能尚未使用 jQuery 我实际上有3个问题 我可能会从我自己的 js 脚本 而不是从文档头中的脚本标记 动态加载 jQuery jquery会这样工作吗
  • 为什么 main() 在 C 中不能声明为静态?

    为什么必须将 main 声明为具有外部链接 为什么它不应该是静态的 外部链接是什么意思 因为您将启动文件链接到您的程序 其中 通常 包含调用 main c 文件的汇编代码 如果 main 是静态的 则该代码将无法调用 main extern
  • 通过 php 更新 Facebook 状态

    我想开发一个机器人 它将使用 php 更新 Facebook 帐户的状态 请在这方面指导我 Porchop 是正确的 您可能需要 Facebook Connect API 要更新 Facebook 上的用户状态 您应该查看状态集API 调用
  • 与 Cisco 路由器的持久 ssh 会话

    我在此站点和多个其他位置进行了搜索 但无法解决在一个命令后连接和维护 ssh 会话的问题 下面是我当前的代码 opt local bin python import os import pexpect import paramiko imp
  • 如何从相同的输入类型上传文件夹和文件?

    我使用的表单可以同时上传文件或完整文件夹 我正在使用以下代码
  • 标准 C++11 中的 IEEE 754 总阶

    根据IEEE 浮点维基页面 在 IEEE 754 上 有一个总订单在双精度浮点上 即C 11具有 IEEE 754 浮点数的实现 例如 Linux x86 64 上的 gcc 4 8 当然 operator lt on double通常提供
  • 如何从 svn diff 中排除某些文件?

    我在用着svn diff c 789显示我们软件版本 789 中所做的更改 但它显示了很多我不关心的文件 特别是测试文件 如何从差异中排除某些文件 例如与模式匹配的所有文件 Test java 我在 Windows 上使用 Cygwin 如
  • 微信Api无法设置应用图标

    在注册 iOS 应用程序时 我一直在努力将水印和高分辨率的图标图像上传到微信 api 结果如下 检查这里的网站 http developers wechat com 我尝试了不同的方法来上传28 28 png透明或不透明和灰度 这真的很烦人
  • 学校考勤系统数据库设计

    我正在为一所学校开展一个项目 其中一个特定模块涉及考勤系统 我正在使用 LAMP PHP 5 2 MYSQL 5 堆栈进行开发 现在学校人数约为1500人 每年总工作日约为250天 另外 我必须保留记录5年才能删除 表结构是 student
  • 在 ggplot2 中的轴刻度上显示两个测量单位

    如何在 ggplot2 中的轴刻度上显示两个替代单位 如果有的话 我想要实现的是这样的 这是一种巧妙的方法 d data frame x 1 20 y rnorm 20 5 5 ggplot data d aes x x y y scale
  • 将我的应用程序提交到 TestFlight 后出现问题

    我们发现您最近交付的 AppName 存在一个或多个问题 要处理您的交货 必须纠正以下问题 无效捆绑包 您的应用程序引用的一个或多个动态库不存在于 dylib 搜索路径中 纠正这些问题后 您可以重新交付纠正后的二进制文件 Regards 应
  • 如何将 stderr 和 stdout 重定向到脚本中同一行中的不同文件?

    我知道的就这么多 command 2 gt gt error command 1 gt gt output 有什么方法可以将 stderr 输出到错误文件并将 stdout 输出到 bash 同一行的输出文件吗 只需将它们添加到一行中即可c
  • 阿拉伯语:“源”Unicode 到最终显示 Unicode

    简单的问题 这是我正在寻找的最终显示字符串 现在下面是每个单独的字符 然后被 粘合 在一起 所以我在每个字符之间留了一个空格以阻止连接 请注意它们不是相同的字符 有一些神奇的转换可以将它们融合在一起并将它们转换为新的 Unicode 字符
  • Python 中 statsmodels 中的 ADF 测试

    我正在尝试运行增强迪基富勒测试statsmodels在Python中 但我似乎遗漏了一些东西 这是我正在尝试的代码 import numpy as np import statsmodels tsa stattools as ts x np
  • `gsutil cp` 命令抛出“OSError:文件名、目录名或卷标语法不正确”

    我已经按照gsutil 安装指南按照 Google Cloud 说明进行操作 我已经更新了 GCloud 组件到最新版本 我最近刚刚安装并配置了 GCloud 以使用我的凭据和项目 首先 我使用以下命令从我的数据库中导出我需要的单个集合火库
  • Spark 作业在显示所有作业已完成后重新启动,然后失败(TimeoutException:Futures 在 [300 秒] 后超时)

    I m running a spark job It shows that all of the jobs were completed 然而几分钟后 整个作业重新启动 这次它将显示所有作业和任务也已完成 但几分钟后它将失败 我在日志中发现
  • 使用 UIViewControllerContextTransitioning “从视图控制器”消失

    我遇到了一个问题 我在下面进行了描述 我在用UIViewControllerContextTransitioning用于自定义过渡 我有 2 个视图控制器 第一个视图控制器和第二个视图控制器 现在我想在第一个视图控制器上添加第二个视图控制器