【问题标题】:displaying splash screen while downloading images from server in ios在ios中从服务器下载图像时显示启动画面
【发布时间】:2016-09-12 15:39:39
【问题描述】:

在我的应用程序中,我正在尝试使用 LWSlideShow LWSlideShow 制作滑块 在尝试解决方案here 后,图像源是从我的服务器获取的在下载图像之前,我提供的 splashView 不会被关闭,这是我的代码以供进一步解释:

 - (IBAction)goDownload {

    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Splash"];
        [self.navigationController presentViewController:vc animated:YES completion:nil];

    dispatch_async(dispatch_get_main_queue(), ^{
        NSMutableArray *array = [@[] mutableCopy];
        LWSlideItem *item = [LWSlideItem itemWithCaption:@""
                                                imageUrl:@"http://code-bee.net/geeks/images/cover-1.jpg"];
        [array addObject:item];
        item = [LWSlideItem itemWithCaption:@""
                                   imageUrl:@"http://code-bee.net/geeks/images/cover-2.jpg"];
        [array addObject:item];
        item = [LWSlideItem itemWithCaption:@""
                                   imageUrl:@"http://code-bee.net/geeks/images/cover-3.jpg"];
        [array addObject:item];





        LWSlideShow *slideShow = [[LWSlideShow alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 120)];

        slideShow.autoresizingMask = UIViewAutoresizingFlexibleWidth;

        //slideShow.delegate = self;
        [self.view addSubview:slideShow];
        slideShow.slideItems = array;



        if ([slideShow.slideItems count] == [array count]) {
            [self dismissViewControllerAnimated:YES completion:nil];
        }



    });









}





//
//-(void)viewWillAppear:(BOOL)animated
//{
//
//    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Splash"];
//    [self.navigationController presentViewController:vc animated:YES completion:nil];
//}




- (void)viewDidLoad {
    [super viewDidLoad];




    [self goDownload];
    }

您也可以从代码中看到我也尝试使用 viewWillAppear

【问题讨论】:

    标签: ios objective-c splash-screen


    【解决方案1】:

    在 viewDidAppear 之前的任何时间从 VC 运行该代码(如 viewDidLoad、viewWillAppear)将导致您描述的问题。但您可能不希望幻灯片显示视图出现 - 即使是瞬间 - 直到您完成获取资产。这是一个常见的问题。

    解决方案是认识到“启动画面”和网络任务不仅仅是序言,它们与幻灯片一样是应用程序的一部分。

    编辑 使 Splash vc 成为故事板中应用程序的初始视图控制器。现在,幻灯片 vc 大概是这样的:

    取消选中“是初始视图控制器”复选框,找到您的初始视图控制器(我希望在同一个情节提要中)并选中它作为初始视图控制器。现在,您的应用将在 splash vc 上启动,如您所愿。

    当 splash vc 完成后,它可以呈现幻灯片 vc,甚至可以将自己(用幻灯片)替换为应用程序窗口的根。

    为了替换 UI,我使用了这个 sn-p 的变体...

    // in the splash vc, after all of the asset loading is complete
    
    // give what used to be your initial view controller a storyboard id
    // like @"MySlideShowUI"
    
    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MySlideShowUI"];
    
    UIWindow *window = [UIApplication sharedApplication].delegate.window;
    window.rootViewController = vc;
    
    [UIView transitionWithView:window
                      duration:0.3
                       options:UIViewAnimationOptionTransitionCrossDissolve
                    animations:nil
                    completion:nil];
    

    【讨论】:

    • 您能否提供更多有关如何解决我的问题的详细信息
    • 哪部分解释不够?
    • 使 Splash vc 成为故事板中应用程序的初始视图控制器。完成后,它可以呈现幻灯片 vc,甚至可以将自己(用幻灯片)替换为应用程序窗口的根。
    • 如果您知道 uber 应用程序,当您启动应用程序时,会出现启动画面,直到数据加载完毕
    • 然后如何回到tabbarcontroller
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多