iPhone - initWithFrame不适用于UIActivityIndi​​catorView?

时间:2009-03-21 12:22:42

标签: iphone

我正在使用自定义单元格的tableview,并希望在按钮单击时更改tableview的内容。我正在使用活动指示符,而单元格正在加载数据。

这就是我创建指标视图的方式

indicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(141.0, 190.0, 37.0, 37.0)];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
indicator.hidesWhenStopped = YES;
[[self tableView] addSubview:indicator];

但似乎框架对指标没有影响。指示符不是显示在表格的中心,而是显示在视图左上角的导航栏中。

我不知道这有什么问题以及为什么会这样。有人可以帮帮我吗。 alt text http://www.freeimagehosting.net/uploads/95cbe49850.png

2 个答案:

答案 0 :(得分:8)

initWithFrame:不是创建UIActivityInidcator的建议方法。看一下API,您可以看到要创建UIActivityIndicator,您应该使用

[[UIActivityIndicator alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];

然后将其添加到您的视图中,并按照Pablo的建议使用setCenter:设置其位置。

此外,如果用户向上或向下滚动,将其添加到表格视图中的某个位置将使其与表格一起滚动。如果你将它放在表格的超级视图中,它将保留在原位。

答案 1 :(得分:6)

试试这个:

    activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
    [activityIndicator setCenter:CGPointMake(160.0f, 208.0f)];
    [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
    [activityIndicator startAnimating];

调用 setCenter 应该提供您期望的行为。

祝你好运!