3

我有一个在 xib 文件中定义的UITableViewCell2 。UIImageView现在我有了美化 ui 的想法,我想更改 UIImageView 的运行时,UIActivityIndicatorView直到异步响应不回来。

不幸的是,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;
}

有什么想法有什么问题吗?

4

2 回答 2

4

如果您在白色背景上有一个白色微调器,则它似乎不可见。

于 2013-07-05T17:01:51.310 回答
1

设置框架,然后调用 start Animating。还可以尝试更改您分配给它的框架。

loadingActivity.frame = CGRectMake(20, 20, 40, 20)

您还可以设置属性loadingActivity.hidesWhenStopped = YES;而不是执行 removeFromSuperview。

于 2013-07-05T15:38:57.713 回答