如何在自定义UIButton上使用UIActivityIndi​​catorView?

时间:2011-11-15 20:32:46

标签: objective-c uibutton uiactivityindicatorview

我想在我的自定义UIButton上使用UIActivityIndi​​catorView。

这是我的代码:

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检查网络可用性时启动ActivityIndi​​catior。完成后将其传递给下一个视图。

更新 UIActivityIndi​​cator位于我的自定义UIButton之上。它构建成功,但当我触摸按钮时,ActivityIndi​​cator没有显示。

2 个答案:

答案 0 :(得分:1)

从那以后我确定你有答案。 4年后,语言已经改为Swift,但我遇到了同样的问题:UIActivityIndi​​catorView在我添加时没有显示:

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

}