全屏呈现多个图像

时间:2013-02-01 10:14:12

标签: ios image fullscreen

我正在寻找Apple用于全屏显示多个图像的类名称(当您点击任何应用程序的预览图像时,类似于iPad上的AppStore-App。在视图的底部是一个预览少的图像来自所有图像的图像。)

如果这是一个公共类,它是如何调用的,它是否也适用于iPhone?

1 个答案:

答案 0 :(得分:0)

好的,所以我创建了自己的ImageFullScreenPresenter。 对于任何试图构建自己的ImageFullScreenPresenter的人来说,重要的是使它成为UIViewController的子类。

  PKImageFullScreenPresenter *pkImageFullScreen = [[[PKImageFullScreenPresenter alloc] initWithNibName:@"PKImageFullScreenPresenter" bundle:nil imageArray:myImageArray] autorelease];
        AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
        UIViewController     *rootViewController;
        if (DEVICE_IS_IPAD) {
            //since the splitviewcontroller is the rootviewcontroller on ipad i set it as my temporary rootViewcontroller for ipad
            rootViewController  = appDel.splitViewController;
        }
        if (DEVICE_IS_IPHONE) {
            //on iphone i need the tabbarcontroller as temporary rootviewcontroller
            rootViewController  = appDel.tabBarController;
        }
        //set the alpha to zero, so it can fade in animated
        pkImageFullScreen.view.alpha    = 0;
        //save the temporary rootViewController, so I can set it back when dissmissing the ImageViewController
        pkImageFullScreen.superViewController       = rootViewController;

        //hide the status bar
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

        //setting black backgroundcolor
        [UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor blackColor];

        //init the fullscreencontroller as rootview
        [[UIApplication sharedApplication].keyWindow setRootViewController:[[[UINavigationController alloc] initWithRootViewController:pkImageFullScreen] autorelease]];
//smooth fade animation
        [UIView animateWithDuration:.5f
                         animations:^(void){
                             pkImageFullScreen.view.alpha = 1;
                         }];

这样,允许我在iPhone和iPad上展示ImageFullScreenPresenter,无论您使用的是基于窗口的应用程序,还是iPad上的splitViewController等等。 当解雇ImageFullScreenPresenter时,我用动画设置临时保存的rootViewController:

- (void)closeView:(id)sender{
[UIView animateWithDuration:.5f
                     animations:^(void){
                         self.view.alpha = 0;
                     }completion:^(BOOL finished){
                         //show the statusbar again
                         [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
                         //setting the statusbarstyle
                         [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
                         //set the backgroundcolor for the window
                         [UIApplication sharedApplication].keyWindow.backgroundColor = GLOBAL_TINT_COLOR; //my custom color vor all GUI Objects
                         //set the temporary rootViewController back
                         [[UIApplication sharedApplication].keyWindow setRootViewController:superViewController];

                         //sometimes the navigationbar hides the statusbar, the following two lines help me out
                         [[UIApplication sharedApplication].keyWindow.rootViewController.navigationController setNavigationBarHidden:YES];
                         [[UIApplication sharedApplication].keyWindow.rootViewController.navigationController setNavigationBarHidden:NO];

                     }];

}

我不知道这是否是正确的方法,但它对我来说非常好。我不必担心任何轮换问题,就像我直接将其添加到[UIApplication sharedApplication].keyWindow时那样。

我希望这有助于其他尝试实现同样目标的人:)