gpt4 book ai didi

ios - 在 ios 中从服务器下载图像时显示启动画面

转载 作者:行者123 更新时间:2023-11-28 19:37:39 25 4
gpt4 key购买 nike

在我的应用程序中,我正在尝试使用 LWSlideShow 制作 slider LWSlideShow尝试解决方案后从我的服务器获取图像源 here我坚持说不平衡调用的错误,这意味着我在通过将动画设置为 no 解决此问题后未完成他的动画的 View 上呈现模态视图,在此处下载图像之前我呈现的 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 发生了同样的事情我想要的是当图像被下载时需要关闭 splashView 我不知道我做错了什么

最佳答案

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

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

编辑使 Splash vc 成为 Storyboard中应用程序的初始 View Controller 。现在,幻灯片 vc 可能看起来像这样:

enter image description here

取消选中“Is Initial View Controller”复选框,找到您的初始 View Controller (我希望在同一个 Storyboard中)并选中它作为初始 View Controller 的框。现在您的应用程序将在 splash vc 上启动,如您所愿。

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

为了替换 UI,我使用了这个片段的变体...

// 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];

关于ios - 在 ios 中从服务器下载图像时显示启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com