Анимируйте UITableViewCell с эффектом джинна - PullRequest
2 голосов
/ 01 июля 2011

Я застрял. У меня есть TableView с сообщениями. После выбора они будут удалены и перемещены в корзину. Я получаю эффект джина очень легко, используя его в controller:didChangeContent [...] case NSFetchedResultsChangeDelete, но он оживляет позади других клеток. Но я хочу это поверх других ячеек. Что я делаю не так?

Вот код анимации:

[UIView beginAnimations:@"suck" context:NULL];
[UIView setAnimationTransition:103 forView:myCell cache:YES];
[UIView setAnimationDuration:0.5];
[UIView setAnimationPosition:CGPointMake(50, 710)];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[UIView commitAnimations];

Получил идею от здесь .

Ответы [ 2 ]

0 голосов
/ 01 марта 2013

Исходный код вы можете получить по этой ссылке

В файле ViewController.m внесите следующие изменения

- (void) genieToRect: (CGRect)rect edge: (BCRectEdge) edge
{    
NSTimeInterval duration = self.durationSlider.value;

CGRect endRect = CGRectInset(rect, 5.0, 5.0);

[self.buttons enumerateObjectsUsingBlock:^(UIButton *button, NSUInteger idx, BOOL *stop)     {
    button.enabled = NO;
}];

if (self.viewIsIn) {
    [self.draggedView genieOutTransitionWithDuration:duration startRect:endRect startEdge:edge completion:^{
        self.draggedView.userInteractionEnabled = YES;
        [self.buttons enumerateObjectsUsingBlock:^(UIButton *button, NSUInteger idx, BOOL *stop) {
            button.enabled = YES;
        }];
    }];
} else {
    self.draggedView.userInteractionEnabled = NO;
    [self.draggedView genieInTransitionWithDuration:duration destinationRect:endRect destinationEdge:edge completion:
     ^{
         [self.buttons enumerateObjectsUsingBlock:^(UIButton *button, NSUInteger idx, BOOL *stop) {
             button.enabled = YES;
         }];}];
}

self.viewIsIn = ! self.viewIsIn;
}

Надеюсь, это поможет .. Счастливого кодирования !!!

0 голосов
/ 01 июля 2011

Вы можете попытаться вывести свою клетку на передний план, выполнив следующее:

[myCell.superview bringSubviewToFront:myCell]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...