Ios6 在iOS 6中显示模式视图

Ios6 在iOS 6中显示模式视图,ios6,modalviewcontroller,instagram,uicollectionview,Ios6,Modalviewcontroller,Instagram,Uicollectionview,我想显示模式视图,但有两个问题: iOS 6中没有presentModalViewController,我必须使用presentViewController,它只是像模式序列一样显示我的第二个ViewController,而不是没有全屏选项的模式窗口 我的第二个问题是如何从UICollectionViewController显示模式窗口。我尝试使用presentViewController,但它只适用于ViewController,而不适用于CollectionViewController 我想

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

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

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

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

    谢谢


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

    正如您所说的
    presentViewController
    仅适用于
    UIViewController
    而不是
    UICollectionViewController.

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

    #import <UIKit/UIKit.h>
    
    @class UIViewController;
    
    @interface MyCVController : UICollectionViewController
    
    @end
    
    #导入
    @类UIViewController;
    @接口MyCVController:UICollectionViewController
    @结束
    
    如果我正确理解了您的意思,那么您想要实现的是在父级上显示一个
    视图控制器,并且仍然可以在后台看到父级
    视图控制器

    第一个解决方案:

    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”,并且您可以在脚本\xib中看到它的背景色。背景色将清晰,并将创建透明效果

    第二种解决方案:

    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];
    
    创建一个容器(如果您计划使用故事板IB,iOS 6及以上版本,低于该版本将允许您创建容器,但只能以渐进的方式)

    将容器大小设置为父容器大小的3/4,并将第二个viewcontroller连接到该容器。您可以

    myContainer.alpha = 1; 
    

    要在屏幕上显示它。

    是的,但这是窗口上方的一层,您如何实现这一点?可能是view.window.subview有帮助