很难将 UIActivityIndi​​cator 放置在 UIButton 中

Posted

技术标签:

【中文标题】很难将 UIActivityIndi​​cator 放置在 UIButton 中【英文标题】:Having hard time placing a UIActivityIndicator inside a UIButton 【发布时间】:2015-03-01 20:03:22 【问题描述】:

我在将 UIActivityIndi​​cator 放置在 UIButton 中时遇到了一些问题。 下面是它的样子:

这就是我经常得到的:

使用此代码:

  self.activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];

    CGFloat halfButtonHeight = self.updateEventButton.bounds.size.height / 2;
    CGFloat buttonWidth = self.updateEventButton.bounds.size.width;
    self.activityView.center = CGPointMake(buttonWidth - halfButtonHeight , halfButtonHeight);

    [self.subSubView addSubview:self.activityView];
    [self.activityView startAnimating];

我希望指示器位于右上角的底部。只需查看指示器现在的位置,并考虑是否将其向下拖动到按钮,然后再向右拖动一点。

这是我的视图设置方式:

【问题讨论】:

【参考方案1】:

您正在计算与按钮相关的坐标系中的指示器位置,但随后将其作为子视图添加到不同的视图,因此坐标不正确。要解决这个问题,您可以直接向按钮添加指示器视图:

[self.updateEventButton addSubview:self.activityView];

或将按钮坐标系中的点转换为self.subSubView的坐标系,然后再设置为activityView:

CGPoint centerInButton = CGPointMake(buttonWidth - halfButtonHeight, halfButtonHeight);
self.activityView.center = [self.updateEventButton convertPoint:centerInButton
                                                         toView:self.subSubView];

【讨论】:

以上是关于很难将 UIActivityIndi​​cator 放置在 UIButton 中的主要内容,如果未能解决你的问题,请参考以下文章

UIActivityIndi​​cator 在构建 UIView 层次结构时旋转?

UICollectionView 单元格中的 UIActivityIndi​​cator 随机不会隐藏

UIActivityIndi cator添加AppDelegate

我可以更改 UIActivityIndi​​cator 的大小吗?

使用 CAShapeLayer 创建 UIActivityIndi​​cator 动画

iPhone/iPad 上 UIActivityIndi​​cator 下的阴影