繁体   English   中英

旋转UITableViewCells

[英]Spinning UITableViewCells

我有一个UITableView从Web加载其数据,并且在加载数据时,只有很少的单元格指示该过程。 每个单元格都有一个UIImageView,我想不断旋转它。

在UITableViewController内部,我得到了这个:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:    (NSInteger)section
{
    //there are three "default" cells
    return self.datasource.count > 0 ? self.datasource.count : 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(self.datasource.count)
    {
    //return a cell with loaded data
    }
    else
    {
        LoadingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LoadingIndicationCell"];

        return cell;
    }
}

LoadingTableViewCell有一个* .xib文件,它带有UIImageView的相应引用出口,称为“圆圈”

- (void)awakeFromNib {
    self.circle.alpha = .3f;
    self.spinning = NO;
    [self startSpin];
}
- (void) spinWithOptions: (UIViewAnimationOptions) options {
    NSLog(@"SPINNIN'");
    // this spin completes 360 degrees every 2 seconds
    [UIView animateWithDuration: 0.5f
                          delay: 0.0f
                        options: options
                     animations: ^{
                         _circle.transform =     CGAffineTransformRotate(_circle.transform, M_PI / 2);
                     }
                     completion: ^(BOOL finished) {
                         if (finished) {
                             if (_spinning) {
                             [self spinWithOptions: UIViewAnimationOptionCurveLinear];
                         } else if (options != UIViewAnimationOptionCurveEaseOut) {
                             [self spinWithOptions: UIViewAnimationOptionCurveEaseOut];
                         }
                     }
                 }];
}

- (void) startSpin {
    if (!self.spinning) {
        self.spinning = YES;
        [self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
    }
}

- (void) stopSpin {
    self.spinning = NO;
}

它似乎旋转2次然后停止。 在控制台中,我想有6个“ SPINNIN'”输出,每个单元两个。

我对iOS开发非常陌生,一直在努力解决整个晚上的问题。 顺便说一句,当这些单元对象被已加载数据的单元替换时,会发生什么? 那我在哪里叫stopSpin?

最终,我最终得到了以下代码:

- (void) spinWithOptions: (UIViewAnimationOptions) options {
    if([self isHidden]) [self stopSpin]; //stop spinning when the cell got replaced
    // this spin completes 360 degrees every 2 seconds
    [UIView animateWithDuration: 1.0f
                      delay: 0.0f
                    options: options
                 animations: ^{
                     _circle.transform = CGAffineTransformRotate(_circle.transform, M_PI / 2);
                 }
                 completion: ^(BOOL finished) {
                        if (_spinning) {
                             [self spinWithOptions: UIViewAnimationOptionCurveLinear];
                        }
                 }];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM