TableView Cell中的UIActivityIndi​​catorView

时间:2016-03-07 03:36:04

标签: ios objective-c uitableview uiactivityindicatorview

我试图将Spinner添加到我在tableViewCell中定位的Like按钮。但问题是spinner正在tableViewCell之外显示。

这是我在cellForRowAtIndexPath

中实现我的代码的方式
myspinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

[myspinner setCenter:cell.like.center];
[cell.like addSubview:myspinner];

当我点击sender.tag

[myspinner startAnimating];

问题是微调器工作但不是我想要的。它出现在牢房外面。

更新

使用matt的回答确实有效。 我也改变了我的代码,如下所示。内部选择器动作。 -(void) likeClicked:(UIButton*)sender

UIActivityIndicatorView *myspinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [myspinner setCenter: CGPointMake(CGRectGetMidX(sender.bounds),
                                      CGRectGetMidY(sender.bounds))];
    [sender addSubview:myspinner];
    [myspinner startAnimating];

2 个答案:

答案 0 :(得分:2)

此表格的代码:

[myspinner setCenter:cell.like.center];

......永远不对。原因是myspinner.center位于其superview的坐标中 - 即cell.like坐标。但cell.like.center位于 superview的坐标中。因此,您正在将苹果与橙子进行比较:您将根据生活在完全不同的坐标系中的另一个点来设置一个点。这只能偶然发挥作用。

您要做的是将myspinner.center设置为其超级浏览的界限的中心。这些值位于相同的坐标系中(此处为cell.like的坐标系)。

[myspinner setCenter: CGPointMake(CGRectGetMidX(cell.like.bounds),
                             CGRectGetMidY(cell.like.bounds))];

答案 1 :(得分:0)

或者您可能希望使用单元格的内容视图来获取单元格的中心,

[myspinner setCenter:cell.contentview.center];

这也可以。