gpt4 book ai didi

iphone - iOS 7 模态显示在状态栏下方

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:55 24 4
gpt4 key购买 nike

我试图从一个 View Controller 中以模态方式呈现一个 View ,该 View Controller 包含在另一个 View Controller 中(例如,一个标签栏 Controller ,包含一个 View Controller ,以模态方式呈现另一个 View Controller )。

层次结构如:

View Controller 1
view 1 (belonging to view controller 1)
view 2 (belonging to view controller 2)
-> presented view 3 (belonging to view controller 3)

我遇到的问题是,在 iPad 上,呈现的 View Controller 出现在状态栏下方,使呈现的 View Controller 在状态栏后面可见。我希望 View 填满整个屏幕并位于状态栏后面。

奇怪的是,如果我从 View Controller 1 呈现模态,它工作正常,如果我尝试从 View Controller 2 呈现它,我会遇到这个问题。

另一个奇怪的是,如果我在iphone模拟器中运行相同的代码,没有问题,按预期工作,但如果我在ipad sim中运行,就会出现这个问题。

例如:

see screenshots

红色 View 是属于 View Controller 2 的 View ,绿色是 View Controller 3。

如您所见,在 iPhone 上, View Controller 3 覆盖了整个屏幕,而在 iPad 上,它位于状态栏下方。

为了测试这一点,在xcode中新建一个单一 View 通用项目,并在创建的 View Controller 中的viewDidAppear方法中添加以下代码,并在iphone和ipad模拟器中运行:

-(void)viewDidAppear:(BOOL)animated
{
UIViewController *vc1 = [UIViewController new];
vc1.view.backgroundColor = [UIColor redColor];
[self.view addSubview:vc1.view];

UIViewController *vc2 = [UIViewController new];
vc2.view.backgroundColor = [UIColor greenColor];

[vc1 presentViewController:vc2 animated:YES completion:nil];
}

有人有什么想法吗?根据苹果过渡指南,我已经尝试了新的 edgesForExtendedLayout 属性的所有组合等等。我必须避免向 vc2 添加任何内容。

创建了 2 个示例项目 here这显示了呈现模态的 tabbar 应用程序和呈现模态的非 tabbar 项目之间的区别。两者的设置方式相同,具有 3 个 View Controller 。

iphone 和 ipad 之间的差异似乎很奇怪。

奥利

最佳答案

我找到了这个问题的答案。

将 subview Controller (将呈现模态的那些)添加到父 View Controller 时,您必须告诉父 View Controller subview Controller 确实是 subview Controller ,这会影响模态上下文

  [self presentViewController:animated:completion:]

被调用。

您可以通过调用:

[self addChildViewController:viewController]

当你添加 subview Controller 时。

如果你从父级移除一个 View Controller ,你必须调用:

[viewController removeFromParentViewController];

这解决了上述问题。

请注意,iPhone 和 iPad 之间的模态显示上下文不同,iPhone 总是会全屏显示模态视图 Controller ,无论如何,在 iPad 上,呈现 View Controller 需要知道要显示什么上下文中的模态视图 Controller (基本上谁是父 View Controller )。

希望这对您有所帮助。

关于iphone - iOS 7 模态显示在状态栏下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com