0

我把它UITableViewCell放在一张桌子上,左边imageView设置为一张图片。现在我想要的只是当用户选择单元格(别名行)时不断旋转这个图像。我可以动画单元格imageView旋转,但一旦我这样做,应用程序就会停止响应用户输入。换句话说,应用程序挂起,图像按原样旋转。下面是相关的代码片段。

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//...
    [NSThread detachNewThreadSelector:@selector(rotateImage) toTarget:self withObject:nil];

//...
}

- (void) rotateImage {
    UITableViewCell *selectedCell = [self.tableView cellForRowAtIndexPath:[self.tableView indexPathForSelectedRow]];

    [UIView beginAnimations:@"looping animation" context:nil];
    // other animation options here if you'd like, and the duration can be anything, not just 3.

    [UIView animateWithDuration:10 delay:0 options:UIViewAnimationOptionRepeat animations: ^{
        // do your rotation stuff on your image, in this block, for the cell you will be returning.
        selectedCell.imageView.transform = CGAffineTransformMakeRotation(kDegreesToRadians(90));
    } completion:nil];

    [UIView commitAnimations];  
}

如果我评论NSThread代码行,应用程序不会挂起,所以基本上我在动画代码中做错了什么,只是让应用程序进入挂起状态。

4

1 回答 1

1

块动画的(烦人的)默认设置是禁用用户交互。尝试这个:

[UIView animateWithDuration:10 delay:0
                    options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAllowUserInteraction
                 animations:^{
                    selectedCell.imageView.transform = CGAffineTransformMakeRotation(M_PI);
                }
                 completion:NULL];
于 2011-06-07T14:30:01.593 回答