当关闭模态视图控制器时,底层 UIScrollView 调整为全屏

Posted

技术标签:

【中文标题】当关闭模态视图控制器时,底层 UIScrollView 调整为全屏【英文标题】:When Dismissing a Modal View Controller the underlying UIScrollView resizes to fullscreen 【发布时间】:2012-02-16 08:14:44 【问题描述】:

我有一个布局,顶部有一个自定义状态栏 [在 Apple 的状态栏下方],然后是一个在中间部分从左到右分页的 UIScrollview,然后我有一个带有一些自定义按钮的 UIView底部。所以一个简单的三窗格布局,效果很好。但是,下部视图上的三个自定义按钮会弹出一个ModalViewController,当它被关闭时,它会将中间的UIScrollView 调整为全屏,并将其带到前面,覆盖我拥有的其他两个视图.

还有其他几个人注意到了这种行为,但他们给出的唯一答案似乎是将UIScrollView 重新调整为原始坐标。当然,这会起作用,但对我来说这似乎是一个 hack,我想知道这里幕后到底发生了什么,以及如何正确纠正这个问题。

具有相同明显问题的其他 SO 链接:

Dismiss modal view changes underlying UIScrollView Dismissing Modal View Controller causing layout problems Weird Behavior on dismissing Modal View Controller

还有其他人注意到该行为仅影响 3.0 及更高版本,因此我不确定这是否是“功能”,我只是不了解该行为应该做什么,或者是什么。如果有人能对此有所了解,我将不胜感激。

【问题讨论】:

【参考方案1】:

我也有同样的问题。 在模态视图的父级中,我使用的是这个:

-(void)viewWillAppear:(BOOL)animated
    [self.view setFrame:CGRectMake(0, 0, originalWidth, originalHeight)];

其中 originalWidth 和 originalHeight 是我的父视图的原始大小。

它工作得很好,即使这对我来说听起来也像是一个 hack。

【讨论】:

【参考方案2】:

您是否尝试过更改 nib 文件中的设置?

检查 nib 中滚动视图的自动调整大小。

【讨论】:

我更改了自动调整大小设置,但似乎没有任何改变。谢谢!

以上是关于当关闭模态视图控制器时,底层 UIScrollView 调整为全屏的主要内容,如果未能解决你的问题,请参考以下文章

在模态视图控制器被关闭时调用底层视图控制器中的函数

关闭模态视图控制器

如何一次关闭 3 个模态视图控制器?

为啥一个简单的模态视图控制器在呈现和关闭时会滞后?

从 uitabbarController 视图中关闭模态视图

在后台关闭模态视图控制器