我试图将Spinner添加到我在tableViewCell中定位的Like按钮。但是问题是微调器显示在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];

最佳答案

这种形式的代码:

[myspinner setCenter:cell.like.center];

...永远是不对的。原因是myspinner.center在其父视图的坐标中—即在cell.like坐标中。但是cell.like.center在其 super 视图的坐标中。因此,您正在将苹果与橘子进行比较:您是根据生活在完全不同的坐标系中的另一个点设置一个点。那只能是偶然的。

您要做的是将myspinner.center设置为其 super 视图范围的中心。这些值在同一坐标系中(此处为cell.like的坐标系)。
[myspinner setCenter: CGPointMake(CGRectGetMidX(cell.like.bounds),
                             CGRectGetMidY(cell.like.bounds))];

10-07 13:44
查看更多