如何将活动指标作为子视图添加到UIButton?

时间:2010-09-08 13:41:48

标签: iphone

我们可以将活动指标作为子视图添加到UIButton吗?

如果是,那么请告诉我该怎么做?

我使用了[button addSubview:activityIndi​​cator];

不工作......

4 个答案:

答案 0 :(得分:2)

我发现在UIButton中添加UIActivityIndi​​catorView是一种非常有用的方法,可以让用户在不使用MBProgressHUD的情况下知道正在发生的事情(我认为HUD非常好但不应该在所有情况下使用。

出于这个原因,我创建了两个函数:

我已经分配了我的UIButton,因此它是一个名为_confirmChangesButton的类变量 然后,我创建我的活动指示器,设置其框架(考虑按钮大小),然后添加指标很容易。

- (void)addActivityIndicatorToConfirmButton {

    // Indicator needs to be in the middle of the button. So half the screen less half the buttons left inset less half the activity indicator size
    CGRect rect = CGRectMake([UIScreen mainScreen].bounds.size.width/2 - 10 - 15, 5, 30, 30);

    UIActivityIndicatorView * activity = [[UIActivityIndicatorView alloc] initWithFrame:rect];
    activity.hidesWhenStopped = YES;

    [_confirmChangesButton setTitle:@"" forState:UIControlStateNormal];
    [_confirmChangesButton addSubview:activity];
    [activity startAnimating];
}

如果使用块,则使用删除功能也很有用。可能是完成任务返回失败,因此我们要删除指标并更改标题。在这个函数中,我们需要确保删除指标而不是按钮标签,这是该按钮上的另一个子视图。

- (void)removeActivityIndicatorFromConfirmButton {

    UIActivityIndicatorView * activity = _confirmChangesButton.subviews.lastObject;;

    [activity removeFromSuperview];

    [_confirmChangesButton setTitle:@"Confirm Change" forState:UIControlStateNormal];
}

我发现使用这两种方法可以创造更好的用户体验,让用户知道按下按钮时会发生什么。

希望这有帮助

答案 1 :(得分:1)

使用下面的代码添加活动指示符按钮或任何uiview对象

UIActivityIndicatorView *aView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
aView.frame = CGRectMake(0, 0, {yourButton}.frame.size.width, {yourButton}.frame.size.height);
aView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.7];
[{yourButton} addSubview:aView];
[aView startAnimating];

希望这会有所帮助..

答案 2 :(得分:0)

我认为不可能为按钮添加视图。 UIButton有这种方法,因为它继承自UIVIew。 真正的问题是:为什么要在按钮上添加活动指示器而不在其他地方?

答案 3 :(得分:0)

你做了[activityIndi​​cator startAnimating];也就是你在tableview中使用它只是检查标签是否设置正确