7

我正在迁移使用 NIB 的旧代码以使用手动视图创建 ( loadView) 和自动布局。根视图控制器是一个容器 VC(有 2 个子级),它使用自动布局并以模态方式呈现一个视图控制器,其布局在 NIB 中指定,但尚未使用自动布局。之后一切都很好presentViewController:animated:completion:,但是当模态视图dismissViewControllerAnimated:completion:通过委托调用关闭时,呈现视图处于一种奇怪的、不可用的状态,其中内容被奇怪地移动并且对触摸没有反应。

我试图创建最小的测试用例来重现该问题,但我未能重现该问题。

这可能是什么原因造成的?

4

4 回答 4

9

我正在设置translatesAutoresizingMaskIntoConstraints = NO;我的 root UIView。它出现在“最外层” UIView——视图层次结构根部的超级视图必须使用默认的translatesAutoresizingMaskIntoConstraints = YES. 一旦我删除了这个,一切都按预期工作。

于 2013-09-06T10:45:53.227 回答
3

升级到 IOS 11 时我遇到了这个问题。 UICollectionView 布局不再显示单元格。通过添加以下行修复:

controller.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:controller animated:YES completion:nil];

不知道为什么这会修复它但不给它一个演示样式真的会与演示控制器的底层布局混淆。

于 2017-09-25T17:02:33.090 回答
0

我也有同样的问题,当我尝试这个导航控制器时它工作正常,但现在的视图控制器不行。使用下面的视图控制器方法和 translatesAutoresizingMaskIntoConstraints 来解决这个问题。

-(void) viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    self.view.translatesAutoresizingMaskIntoConstraints = NO;
}

现在请让我知道您对此有任何顾虑。谢谢

于 2014-11-06T10:25:27.423 回答
0

一个不同的解决方案 - 我发现如果从容器视图(而不是子视图)中的视图控制器呈现,如果你将 segue 从模态切换到显示,你的约束将在你的初始视图上保持不变,但仍然像你一样动画以模态方式呈现并且仍然能够正确调用dismissViewController。

于 2016-06-08T06:24:48.157 回答