当另一个视图控制器显示在 UIPresentationController 之上时,UIPresentationController 会更改大小

2023-11-22

我正在使用 UIPresentationController 展示一个模式视图控制器。我使用以下方法将presentedView 的框架设置为小于containView 的边界:

override func frameOfPresentedViewInContainerView() -> CGRect {
    let myDX = (self.containerView!.bounds.width - 600)/2
    let myDY = (self.containerView!.bounds.height - 600)/2
    return self.containerView!.bounds.insetBy(dx: myDX, dy: myDY)
}

到目前为止一切都很顺利。

现在,我在当前显示的模态视图控制器之上以模态方式呈现另一个视图控制器(默认非自定义),该控制器占据整个屏幕。因此,我在覆盖整个屏幕的默认模态视图控制器下方有一个自定义模态视图控制器。

问题是当我关闭覆盖整个屏幕的顶视图控制器时,我的自定义视图控制器也显示覆盖整个屏幕。我希望我的自定义视图控制器的大小保持不变(小于containerView)。有什么办法可以实现这一点吗?

任何帮助,将不胜感激


我遇到了同样的问题。我无法通过添加约束来解决它,并且-[UIPresentationController containerViewWillLayoutSubviews]调用得太晚了(在关闭动画完成之后)。

一段时间后,我发现问题似乎是当您呈现默认视图时,呈现控制器视图正在从视图层次结构中删除UIModalPresentationFullScreen presentationStyle并在必须再次显示时再次添加全屏尺寸。

在 iOS 8 中,您可以使用UIModalPresentationOverFullScreen as the presentationStyle当从较小的控制器进行呈现时。此时系统不会自动删除当前控制器的视图。 (-[UIViewController viewWillDisappear:]因此,当您执行此操作时,不会在呈现控制器上调用)

您还可以使用UIModalPresentationCustomiOS 7 中提供了该功能,但是您必须提供自己的过渡动画。

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

当另一个视图控制器显示在 UIPresentationController 之上时,UIPresentationController 会更改大小 的相关文章

随机推荐

  • 这是在ansible中更改conf文件配置的最佳方法

    最初我使用了一个makefile将我的应用程序部署在linux 我有各种sed用于替换 PHP 上传文件大小 帖子大小 日志文件位置等变量的命令 现在我正在转向ansible 我知道我可以复制这些文件 但是如何更改conf文件 就像我只是想
  • React JS/Typescript 中的空合并运算符[重复]

    这个问题在这里已经有答案了 我们有 Null 合并运算符 NET我们可以使用如下 string postal code address postal code 我们可以在 React JS 中做同样的事情吗 我发现我们可以用 运算符来做 i
  • 具有更多模板参数的部分专业化

    部分特化是否允许拥有比主模板更多的模板参数 我的理解是 部分特化必须具有与主模板更少或相同数量的模板参数 我正在阅读 C 模板 第 2 版 其中第 5 4 节 第 72 页 提到 template
  • Python重命名文件从csv文件读取名称

    你好 我一直在努力适应this满足我的需要 但我只是 python 的新手 我有一个包含多个列和行的 csv 文件 重要的列是 1 文件的旧名称 2 文件的新名称 所以我需要转到其中的目录csv 文件中列出的文件并将它们重命名为第 2 列的
  • 在 Android 7(API 级别 24)中,我的应用程序不允许将手机静音(将铃声模式设置为静音)

    我有一个应用程序 通过使用 AudioManager 并将铃声模式设置为静音 使用以下代码将手机静音 AudioManager audioManager AudioManager context getSystemService Conte
  • 奇怪的类声明

    在 Qt 的 qrect h 中 我发现类声明是这样开始的 class Q CORE EXPORT QRect 正如你所看到的 class 关键字后面有两个标识符 我该如何理解这一点 谢谢 Q CORE EXPORT is 扩展为不同值的宏
  • PDO - 获取当前插入的ID

    query INSERT INTO news VALUES NULL param1 param2 stmt pdo gt prepare query params array param1 gt p title param2 gt p bo
  • 如何在指定节点TOC(.NET)上打开CHM文件

    您好 我需要在 NET 应用程序中实现上下文帮助 我有 chm 文件 我正在寻找在标准查看器中打开它的可能性 并突出显示目录 或索引条目 所需的主题 知道如何存档吗 EDIT 也许用于打开 CHM 文件的 MS 应用程序有一些允许存档的命令
  • 使用 Pylint 显示错误和警告

    所以我开始使用 Pylint 但由于我使用制表符而不是空格 它给了我警告 也因为一些方法来自基类 它们也是 GalleryUi 的实例 没有 setModel 成员 而它有 QAbstractTableModel作为基类 那么我如何设置 P
  • Solidity:如何将 bytes32 表示为字符串

    这在其他语言中可能很简单 但我不知道如何在 Solidity 中做到这一点 我有一个bytes32像这样0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712 I
  • 如何使用 Eclipse 编译 32 位

    我目前正在我的 64 位 Ubuntu 电脑上用 C 编写一个小程序 默认情况下 eclipse 会编译 64 位架构的程序 因为我想在我的服务器上使用我的小程序 仍然是 32 位 所以我需要能够编译 32 位程序 我怎样才能在日食中做到这
  • 从其他视图拖动时检测视图上的触摸事件

    如果用户触摸视图 A 并拖动到视图 B 的底部 如何检测触摸事件 我想检测视图 B 中的触摸事件 我在视图 B 中添加了触摸监听器 但如果用户最初触摸 A 并将其拖动到 B 上 则不会收到事件 您可以使用下面的代码来实现您的请求 测试视图边
  • 如何在 Pygame 中截取屏幕的特定部分

    有没有办法可以截取 pygame 窗口右半部分的屏幕截图 我正在使用 pygame 制作游戏 我需要拍摄屏幕快照 但不是整个屏幕 只是右半部分 我知道 pygame image save screen screenshot jpg 但这将包
  • 计算地理邻近度的公式

    我需要在我的应用程序中实现地理邻近搜索 但我对使用的正确公式感到非常困惑 经过在网络和 StackOverflow 中的一些搜索 我发现解决方案是 Use the 半正矢公式 Use the Great Circle Distance Fo
  • .net 中的转换:本机 Utf-8 <-> 托管字符串

    我创建了这两种方法来将本机 utf 8 字符串 char 转换为托管字符串 反之亦然 下面的代码完成了这个工作 public IntPtr NativeUtf8FromString string managedString byte buf
  • 找不到版本 GLIBCXX_3.4.11(buildW.mexglx 需要)

    我正在尝试通过 matlab 编译 C ubuntu 项目here 当我在使用 make 命令编译后尝试使用它时 出现以下错误 Invalid MEX file fashionista v0 2 lib bsr buildW mexglx
  • 从输入迭代器创建 C++ std::string 的性能

    我正在做一些非常简单的事情 将整个文本文件从磁盘放入std string 我当前的代码基本上是这样做的 std ifstream f filename return std string std istreambuf iterator
  • 未找到 Android SSL 连接的信任锚

    我正在尝试连接到运行 godaddy 256 位 SSL 证书的 IIS6 机器 但收到错误 java security cert CertPathValidatorException Trust anchor for certificat
  • 使用 PHP 创建 ping 正常运行时间服务

    我有一台可以使用 PHP 的服务器和一个可以从 Internet ping 通的路由器 我想编写一个 PHP 脚本 每 5 分钟向路由器发送一次 ping 结果如下 如果 ping 成功 则不会发生任何事情 如果 ping 失败 则会等待几
  • 当另一个视图控制器显示在 UIPresentationController 之上时,UIPresentationController 会更改大小

    我正在使用 UIPresentationController 展示一个模式视图控制器 我使用以下方法将presentedView 的框架设置为小于containView 的边界 override func frameOfPresentedV