我想在我的自定义UIButton上使用UIActivityIndicatorView。
这是我的代码:
if (sender.tag == 1)
{
// Start animating
activityIndicator.hidden = NO;
[activityIndicator startAnimating];
// Check if the network is available
if ([self reachable]) {
// Stop animating
activityIndicator.hidden = YES;
[activityIndicator stopAnimating];
}
}
我想做的是: 一旦用户触摸按钮,我想在Reachable检查网络可用性时启动ActivityIndicatior。完成后将其传递给下一个视图。
更新 UIActivityIndicator位于我的自定义UIButton之上。它构建成功,但当我触摸按钮时,ActivityIndicator没有显示。
答案 0 :(得分:1)
从那以后我确定你有答案。 4年后,语言已经改为Swift,但我遇到了同样的问题:UIActivityIndicatorView在我添加时没有显示:
self.myButton.addSubview(self.myIndicatorView)
我不得不爬上一层:
self.myButton.superview!.addSubview(self.myIndicatorView)
答案 1 :(得分:0)
假设项目中的其他一切都是正确的,那么问题在于您在同一个事件循环中显示并隐藏活动指示器,而不会暂停以绘制它。让我解释一下:
如果你有代码:
UIView* view = someView;
view.backgroundColor = [UIColor redColor];
// various synchronous operations
view.backgroundColor = [UIColor yellowColor];
视图的背景颜色只有黄色。
要回答您的问题,您可能希望为微调器设置动画,执行一些异步操作,然后停止动画。关键是在异步任务运行时不会在主事件循环上停止。如果你对块感到满意,它会看起来像这样:
if (sender.tag == 1) {
// Start animating
activityIndicator.hidden = NO;
[activityIndicator startAnimating];
// Check if the network is available
[self checkReachableWithCallback:^{
// Stop animating
activityIndicator.hidden = YES;
[activityIndicator stopAnimating];
}];
}