我有一个 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 的引用出口,称为“circle”
- (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 呢?