2

我想显示一个模态视图,但我有两个问题:

  1. iOS 6 中没有 presentModalViewController,我必须使用 presentViewController,它只是像模态序列一样显示我的第二个 ViewController,而不是没有全屏选项的模态窗口,

  2. 我的第二个问题是如何从 UICollectionViewController 显示模态窗口。我尝试使用 presentViewController 但它只适用于 ViewController 而不是 CollectionViewController。

我想做的最好的例子就是这个(Instagram)。他们是如何制作这个模态窗口的?是因为它仍在使用旧的 iOS 版本而且还不是 iOS 6 吗?或者还有另一种方法可以从 UICollectionViewController 显示这样的模式窗口?

谢谢

在此处输入图像描述

4

3 回答 3

2

如果我正确地理解了您,您要实现的目标是向ViewControllers父母展示您的其中一个,并且仍然在后台看到父母ViewController

第一个解决方案:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext; //self.modalPresentationStyle might do a better job here
    [self presentViewController:vc animated:NO completion:nil];

确保你的SecondViewController内容小于你当前的 ``ViewController` 并且你可以在 StoryBoard\xib 中看到它的背景颜色。背景颜色将清晰并创建透明效果。

第二种解决方案:

创建一个容器(如果您计划使用 Storyboard IB,iOS 6 及更高版本,低于此值将允许您创建容器,但只能逐步创建)。

容器

将容器大小设置为父大小的 3/4,并将第二个视图控制器连接到它。而不是 segueing \ 推送到您的第二个视图控制器,您可以

myContainer.alpha = 1; 

在屏幕上显示它。

于 2013-08-23T12:40:08.870 回答
0

我会看一下 UIContainerView 的文档,它用于以与非全屏模式演示类似的方式将视图控制器显示为另一个视图控制器的子级。

于 2012-10-08T03:23:26.067 回答
0

正如你所说,presentViewController这只适用于UIViewControllerUICollectionViewController.

然后只需在头文件中导入UIViewController类,CollectionViewController如下所示:

#import <UIKit/UIKit.h>

@class UIViewController;

@interface MyCVController : UICollectionViewController

@end
于 2013-08-20T05:56:59.197 回答