iOS - 从呈现的视图控制器呈现视图控制器会改变其高度

伊万·坎塔里诺

我在两个靠近 iOS 邮件应用程序的控制器之间进行了自定义转换,其中一个控制器保持在另一个控制器的顶部,并具有一些已实现的滚动行为。

如果我从 Presented 视图控制器呈现一个不是全屏大小的新视图控制器,然后我关闭了这个新呈现的视图控制器,之前的 Presented 视图控制器会改变它的高度,然后调整自己的大小。

我知道这可能有点令人困惑,但请查看下面的 gif 示例。

例子

如您所见,如果我展示这个自定义图像选择器然后关闭它,展示它的视图控制器会扭曲到全屏,然后调整到初始值。

我怎样才能防止这种情况发生?我希望呈现图像选择器的 ViewController 保持其高度。

关闭后,您可以看到调整大小的发生。

设置呈现视图控制器的大小

因为它是一个UIViewControllerAnimatedTransitioning我创建一个自定义演示文稿并且它设置的大小有它自己的identity

class CustomPresentationController: UIPresentationController {

    override init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController!) {
        super.init(presentedViewController: presentedViewController, presenting: presentingViewController)
    }

    override var frameOfPresentedViewInContainerView: CGRect {
        let containerBounds = self.containerView?.bounds
        let origin = CGPoint(x: 0.0, y: ((containerBounds?.size.height)! * 0.05))
        let size = CGSize(width: (containerBounds?.size.width)! , height: ((containerBounds?.size.height)! * 0.95))
        // Applies the attributes
        let presentedViewFrame: CGRect = CGRect(origin: origin, size: size)
        return presentedViewFrame
    }

    override func containerViewWillLayoutSubviews() {
        presentedView?.frame = frameOfPresentedViewInContainerView
    }
}

任何提示?谢谢

加内什·索马尼

我认为这就是问题所在。您正在强制使用无效的帧大小。你应该使用类似的东西preferredContentSize

您可以简单地将其添加到viewDidLoad您的CustomPresentationController.

或者,您也可以尝试modalPresentationStyle作为“当前上下文”

您可以参考非常好的示例,说明如何在此处保持 VC 的某些部分透明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS 8更改呈现/模态视图控制器的大小

来自分类Dev

iOS 8更改呈现/模态视图控制器的大小

来自分类Dev

iOS 7-在呈现模态视图控制器时获取警告消息

来自分类Dev

在iOS 6的拆分视图控制器中隐藏主视图控制器

来自分类Dev

多个视图控制器-iOS 7

来自分类Dev

呈现的视图控制器涵盖了iOS 7中的状态栏

来自分类Dev

iOS7-iPhone呈现视图控制器-UIPickerView

来自分类Dev

iPad / iOS7:从中呈现“全屏”视图控制器后,“页面”模式视图控制器出现奇怪行为

来自分类Dev

呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

来自分类Dev

iOS容器视图。动态加载视图控制器

来自分类Dev

iOS中的模型-视图-控制器

来自分类Dev

iOS视图控制器包含| 子视图控制器将触摸传递给父视图控制器

来自分类Dev

在iOS8中从操作表的委托模态呈现视图控制器-iOS11

来自分类Dev

ios7呈现视图控制器在呈现时不会旋转,导致状态栏消失

来自分类Dev

在iOS中,初始视图控制器始终与根视图控制器相同

来自分类Dev

iOS8 iOS7和iOS6防止旋转呈现的视图控制器

来自分类Dev

在iOS中将视图控制器添加为子视图

来自分类Dev

iOS-具有对父视图控制器的“强大”引用的子视图控制器

来自分类Dev

呈现视图控制器时如何在iOS13中获取可见的视图大小

来自分类Dev

iOS无法关闭视图控制器

来自分类Dev

为每个视图iOS创建单独的视图控制器?

来自分类Dev

iOS中子视图控制器方向更改时如何旋转父视图控制器

来自分类Dev

呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

来自分类Dev

iOS容器视图。动态加载视图控制器

来自分类Dev

iOS推视图控制器崩溃

来自分类Dev

iOS中的模型-视图-控制器

来自分类Dev

不同视图控制器上的iOS共享命令视图

来自分类Dev

使用标签栏控制器-> 导航控制器-> 视图层次结构-iOS Swift 从应用程序委托呈现视图

来自分类Dev

iOS - 关闭在其视图之外触摸的呈现视图控制器

Related 相关文章

  1. 1

    iOS 8更改呈现/模态视图控制器的大小

  2. 2

    iOS 8更改呈现/模态视图控制器的大小

  3. 3

    iOS 7-在呈现模态视图控制器时获取警告消息

  4. 4

    在iOS 6的拆分视图控制器中隐藏主视图控制器

  5. 5

    多个视图控制器-iOS 7

  6. 6

    呈现的视图控制器涵盖了iOS 7中的状态栏

  7. 7

    iOS7-iPhone呈现视图控制器-UIPickerView

  8. 8

    iPad / iOS7:从中呈现“全屏”视图控制器后,“页面”模式视图控制器出现奇怪行为

  9. 9

    呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

  10. 10

    iOS容器视图。动态加载视图控制器

  11. 11

    iOS中的模型-视图-控制器

  12. 12

    iOS视图控制器包含| 子视图控制器将触摸传递给父视图控制器

  13. 13

    在iOS8中从操作表的委托模态呈现视图控制器-iOS11

  14. 14

    ios7呈现视图控制器在呈现时不会旋转,导致状态栏消失

  15. 15

    在iOS中,初始视图控制器始终与根视图控制器相同

  16. 16

    iOS8 iOS7和iOS6防止旋转呈现的视图控制器

  17. 17

    在iOS中将视图控制器添加为子视图

  18. 18

    iOS-具有对父视图控制器的“强大”引用的子视图控制器

  19. 19

    呈现视图控制器时如何在iOS13中获取可见的视图大小

  20. 20

    iOS无法关闭视图控制器

  21. 21

    为每个视图iOS创建单独的视图控制器?

  22. 22

    iOS中子视图控制器方向更改时如何旋转父视图控制器

  23. 23

    呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

  24. 24

    iOS容器视图。动态加载视图控制器

  25. 25

    iOS推视图控制器崩溃

  26. 26

    iOS中的模型-视图-控制器

  27. 27

    不同视图控制器上的iOS共享命令视图

  28. 28

    使用标签栏控制器-> 导航控制器-> 视图层次结构-iOS Swift 从应用程序委托呈现视图

  29. 29

    iOS - 关闭在其视图之外触摸的呈现视图控制器

热门标签

归档