我有一个UITableViewCell
,在xib文件中定义了2 UIImageView
。
现在我想出了美化ui的想法,我想用UIActivityIndicatorView
更改UIImageView的运行时,直到异步响应没有回来。
不幸的是UIActivityIndicatorView
根本看不到它,只是完成后的完整图像。
以下是相关代码部分:
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:myTableCellId];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
...
UIImageView *imageView = (UIImageView *)[cell viewWithTag:200];
...
imageView.image=nil; // reset image as it will be retrieved asychronously
UIActivityIndicatorView *loadingActivity = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[loadingActivity startAnimating];
loadingActivity.frame = imageView.frame;
UIView* parent = [imageView superview];
[parent addSubview:loadingActivity];
[parent bringSubviewToFront:loadingActivity];
[myObject callMyFunction:index completionBlock:^(UIImage *img) {
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image=img;
[loadingActivity stopAnimating];
[loadingActivity removeFromSuperview];
//DLog(@"Got image for: %@", titleLabel.text);
});
}];
return cell;
}
任何想法有什么不对?
答案 0 :(得分:4)
如果白色背景上有白色微调器,则它看起来不可见。
答案 1 :(得分:1)
设置框架,然后调用开始动画。同时尝试更改已分配给它的帧。
loadingActivity.frame = CGRectMake(20, 20, 40, 20)
您也可以设置属性loadingActivity.hidesWhenStopped = YES;
,而不是执行removeFromSuperview。