立即显示ActivityIndi​​cator

时间:2012-07-05 09:55:38

标签: iphone ios cocoa-touch uiactivityindicatorview

我知道如何动画,显示活动指标。 但我想知道如何立即显示活动指标。

现在当我点击按钮时,它将在5秒或更多秒后加载另一个视图。单击该按钮正在加载子视图。当调用Button Click方法时,它将在此之后调用7个以上的方法,然后它将加载子视图。但只有在完成所有7种方法的执行后才会显示ActivityIndi​​cator。

我想要做的是,我想在Button Click方法之后立即显示ActivityIndi​​cator。

任何想法?

4 个答案:

答案 0 :(得分:2)

-(IBAction)button_click{

..
..
..

[self performSelector:@selector(afterDelay) withObject:nil afterDelay:0.3];
}

-(void)afterDelay{

YOUR_Code 
}

答案 1 :(得分:0)

如果您已将代码设置为显示或取消隐藏activityIndicator但未显示,则必须使用performSelector:withObject:afterDelay:方法执行任何操作后取消隐藏或显示activityIndicator延迟0.001将在点击按钮

后立即显示指示

快乐编码:)

答案 2 :(得分:0)

问题是你在主线程上执行大量计算(或从互联网加载?),但是没有立即调用所有视图变异操作 - 在runloop开始时框架创建一个新的隐式Core Animation事务,然后它收集有关视图突变的所有信息,然后在runloop 的末尾提交事务。通过阻止主线程,您不允许事务提交并启动指标的动画。

您可以在文档中了解此架构:Core Animation Programming Guide: Transactions

有三种选择:

  1. (首选)在后台执行操作。
  2. 将您的二进制文件与QuartzCore.framework关联,然后#import <QuartzCore/QuartzCore.h>,并在[CATransaction commit]电话后致电startAnimating。这样您就可以提交隐式事务。
  3. 创建您自己的显式 CATransaction

答案 3 :(得分:-1)

如果您正在谈论系统活动指标,请使用:

[[UIApplication sharedApplication] performSelector:@selector(setNetworkActivityIndicatorVisible:) withObject:[NSNumber numberWithBool:YES ] afterDelay:0.0];