我知道如何制作动画,显示活动指示器。但我想知道如何立即显示活动指示器。
现在,当我单击按钮时,它将在 5 秒或多秒后加载另一个视图。单击该按钮正在加载子视图。调用该按钮单击方法时,它将调用超过 7 个方法,然后将加载子视图。但是 ActivityIndicator 仅在执行完所有 7 个方法后才会显示。
我想做的是,我想在 Button Click 方法之后立即显示 ActivityIndicator。
任何的想法 ?
我知道如何制作动画,显示活动指示器。但我想知道如何立即显示活动指示器。
现在,当我单击按钮时,它将在 5 秒或多秒后加载另一个视图。单击该按钮正在加载子视图。调用该按钮单击方法时,它将调用超过 7 个方法,然后将加载子视图。但是 ActivityIndicator 仅在执行完所有 7 个方法后才会显示。
我想做的是,我想在 Button Click 方法之后立即显示 ActivityIndicator。
任何的想法 ?
-(IBAction)button_click{
..
..
..
[self performSelector:@selector(afterDelay) withObject:nil afterDelay:0.3];
}
-(void)afterDelay{
YOUR_Code
}
如果您已将代码显示或取消隐藏activityIndicator
但未显示您必须使用performSelector:withObject:afterDelay:
方法在取消隐藏后执行任何操作或显示activityIndicator
延迟为 0.001 将在单击按钮后立即显示指标
快乐编码:)
问题是您在主线程上执行大量计算(或从互联网加载?),但所有视图突变操作都没有立即调用 - 在运行循环开始时,框架创建一个新的隐式核心动画事务,然后它收集有关视图突变的所有信息,然后在 runloop 结束时提交事务。通过阻塞主线程,您不允许事务提交并启动指标动画。
您可以在文档中阅读有关此架构的信息:核心动画编程指南:事务。
有三个选项:
QuartzCore.framework
, 然后在您#import <QuartzCore/QuartzCore.h>
调用[CATransaction commit]
后startAnimating
调用。这样您就可以提交隐式事务。CATransaction
.如果您在谈论系统活动指示器,请使用:
[[UIApplication sharedApplication] performSelector:@selector(setNetworkActivityIndicatorVisible:) withObject:[NSNumber numberWithBool:YES ] afterDelay:0.0];