在iOS 6中呈现模态视图

时间:2012-10-08 03:19:02

标签: ios6 modalviewcontroller instagram uicollectionview

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

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

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

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

    由于

    enter image description here

3 个答案:

答案 0 :(得分: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中看到它的背景颜色。背景颜色将清晰,并将创建透明效果。

第二个解决方案:

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

Container

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

myContainer.alpha = 1; 

在屏幕上显示。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

正如您所说presentViewController仅适用于UIViewController而非UICollectionViewController.

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

#import <UIKit/UIKit.h>

@class UIViewController;

@interface MyCVController : UICollectionViewController

@end