我试图将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))];