模态视图控制器大小

Posted

技术标签:

【中文标题】模态视图控制器大小【英文标题】:Modal View Controller Size 【发布时间】:2012-06-05 17:03:08 【问题描述】:

我正在尝试显示模态视图控制器,但在 iPad 上保持导航栏显示。我尝试了不同的演示风格,但都没有奏效。是否可以调整它的大小,或者将其显示在某个视图的正上方,而不是整个视图控制器的上方?

编辑: 添加代码:

- (void)buttonPressed:(id)sender

    RKWebViewController *webViewController = [[RKWebViewController alloc] initWithNibName:nil bundle:nil];
    webViewController.request = [NSURLRequest requestWithURL:_link];
    webViewController.webView.delegate = self;
    webViewController.shouldDisplayDoneButton = YES;
    webViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentModalViewController:webViewController animated:YES];

【问题讨论】:

你能添加一些你尝试过的代码吗? 我只有一个视图控制器,它调用了一个不同的类,它有一个视图(或者更确切地说,多个视图堆叠)。然后在ViewController 中,我只需单击按钮即可获得presentModalViewController 添加您用于呈现模态视图的代码,其中一定有问题。您是否创建了导航堆栈? 已添加。是的,我有一个导航堆栈。 【参考方案1】:

使用 -

- (void)buttonPressed:(id)sender

    RKWebViewController *webViewController = [[RKWebViewController alloc] initWithNibName:nil bundle:nil];
    webViewController.request = [NSURLRequest requestWithURL:_link];
    webViewController.webView.delegate = self;
    webViewController.shouldDisplayDoneButton = YES;

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:webViewController];
    [webViewController release];

    navController.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentModalViewController:navController animated:YES];
    [navController release];

【讨论】:

当您从 UIViewController 的子类呈现模态视图控制器时,它不会在模态上扩展调用导航控制器的导航栏。所以模态视图覆盖了全屏。查看这个线程的详细描述 - ***.com/questions/948023/… 我的webViewController 使用self.navigationItem 更改完成按钮图像。所以我的方式是,它改变了navigationItem,但导航项没有显示的位置,除非 ViewController 在导航控制器中 - 这是一个正确的解释吗? 是的,有点。 View 可以访问导航控制器,但 View 会覆盖整个屏幕,因此您无法看到更改。

以上是关于模态视图控制器大小的主要内容,如果未能解决你的问题,请参考以下文章

iOS——如何控制模态视图控制器的大小?

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

横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图

当每个新的视图控制器被推送时,调整导航控制器的大小以模态 UIModalPresentationFormSheet 呈现

如何使用 UISplitViewController 作为模态视图控制器?

部分卷曲过渡导致控件调整大小