Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何将活动指示器作为子视图添加到UIButton?_Iphone - Fatal编程技术网

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

Iphone 如何将活动指示器作为子视图添加到UIButton?,iphone,Iphone,我们可以将活动指示器作为子视图添加到UIButton吗 如果是,请告诉我怎么做 我使用了[button addSubview:activityIndicator] 不工作…我认为不可能在按钮上添加视图。UIButton具有此方法,因为它是从UIVIew继承的。 真正的问题是:为什么要在按钮上添加活动指示器而不在其他位置添加?您是否执行了[activityIndicator startAnimating];此外,当您在tableview中使用它时,只需检查标记是否正确设置使用下面的代码添加活动指示

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

如果是,请告诉我怎么做

我使用了[button addSubview:activityIndicator]


不工作…

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

您是否执行了[activityIndicator startAnimating];此外,当您在tableview中使用它时,只需检查标记是否正确设置

使用下面的代码添加活动指示器按钮或任何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];

希望这会有所帮助。

我发现在UIButton中添加UIActivityIndicatorView是一种非常有用的方法,使用户无需使用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];
}
我发现使用这两个按钮可以创建更好的用户体验,让用户知道当他们按下按钮时发生了什么


希望这有助于

什么不起作用?请包括您得到的任何错误消息,以及这些对象是如何声明和实例化的。另外,您调用addSubview的方法是什么:?代码正确。请显示更多代码,即,您如何设置指示器?Dup of我已将“按钮”作为子视图添加到表视图单元格中。我想在该按钮上方显示活动指示器,这是我必须用其他方法执行的操作。我已在.h文件中声明了该按钮。我只想在表视图的单元格中显示活动指示器,而不是按钮…我不知道在2010年是否可能,但现在肯定可能,并且非常有用。将活动指示器添加到uibutton让用户知道按钮已被按下,即使在某些事情发生之前有一点延迟。是的,这增加了良好的用户体验。我将接受此作为ans,以便任何查找此查询的用户都可以获得ans。