gpt4 book ai didi

ios - 在加载 UIView 之前显示 UIActivityIndi​​catorView

转载 作者:行者123 更新时间:2023-12-01 18:27:26 25 4
gpt4 key购买 nike

在我的 UIViewController 的 loadView 方法中,我启动了一个 UIActivityIndi​​cator。稍后在 loadView 中,我加载了一个复杂的 UIView,加载大约需要 2-3 秒。 (UIScrollView 有很多更具体的图片)。我的问题是 UIActivityIndi​​cator 微调器只有在我的其他图层也加载后才可见。 (这对我当然没用)。处理此问题的正确方法是什么?

- (void)loadView {

CGRect fullScreenRect=[[UIScreen mainScreen] bounds];

UIView *contentView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 340, fullScreenRect.size.width)]autorelease];
self.view = contentView;

spinner = [[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease];
spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
spinner.center = self.view.center;
[self.view addSubview:spinner];
[spinner startAnimating];


scrollView=[[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 340, fullScreenRect.size.width)]autorelease];
...setting up scrollView...

[self.view addSubview:scrollView];
}

- (void)viewDidLoad
{
[super viewDidLoad];
[spinner removeFromSuperview];
}

我发现了一个有点相似的线程:
UIActivityIndicatorView not showing until after loading done

但它建议在后台线程中加载东西,但据我所知,加载和显示 UIView 只能在主线程中进行。

我是初学者,如果我的问题根本上是错误的,我很抱歉。

最佳答案

我设法按照 Carl Veazey 建议的方式进行。实际上这很容易。我产生了一个新的后台线程,并在那里加载了我的 UIScrollView。

我在LoadView中使用过:

spinner = [[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease];
spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
spinner.center = self.view.center;
[self.view addSubview:spinner];
[spinner startAnimating];

[self performSelectorInBackground:@selector(populateScrollView) withObject:nil];

和:
-(void) populateScrollView{

...creating scrollView...

[self.view addSubview:scrollView];
[spinner removeFromSuperview];

}

它完美地工作。对我来说真正奇怪的是,我在后台线程中将 ScrollView 添加到 UI,而不是在主线程中。我以为我只能在主线程中弄乱 UI。

(我可以用 GCD 做同样的事情。当后台线程完成加载 ScrollView 时,我可以在主线程的队列中显示 ScrollView 。但前一种解决方案也可以正常工作......)

关于ios - 在加载 UIView 之前显示 UIActivityIndi​​catorView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144644/

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