Я работал над новым приложением и действительно надеялся реализовать пролистывание, чтобы открыть меню дополнительных опций внутри моего приложения. Я искал и искал, но, кажется, никто не смог успешно сделать это (кроме Лорен). То, что я пытаюсь сделать, - это провести пальцем по ячейке и одновременно использовать CABasicAnimation, чтобы переместить ее в x: 320, и добавить ниже подвид, который будет иметь кнопки и т. Д. Я использую willBeginEditing, чтобы обнаружить пролистывание, чтобы избежать подкласса , Вот код:
- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
theAnimation.duration=0.0;
theAnimation.repeatCount=0;
theAnimation.autoreverses=NO;
theAnimation.removedOnCompletion = NO;
theAnimation.fillMode = kCAFillModeForwards;
theAnimation.fromValue=[NSNumber numberWithFloat:0];
theAnimation.toValue=[NSNumber numberWithFloat:+320];
[cell.layer addAnimation:theAnimation forKey:@"animateLayer"];
CGRect frame = CGRectMake(0, 59 * indexPath.row, 320, 59);
UIView *menu = [[[UIView alloc] initWithFrame:frame] autorelease];
NSString *path = [NSString stringWithFormat:@"%@%@",
[[NSBundle mainBundle] resourcePath],
@"/flick.wav"];
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
self.menu.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"dots.png"]];
[self.view addSubview:menu];
[self.view sendSubviewToBack:menu];
}
- (void)animationDidStop:(NSString*)animationID finished:(BOOL)finished context:(void *)context
{
// Release
[self release];
}
#pragma mark - Swipe Menu II
- (void)scrollViewDidScroll:(UIScrollView *)tableView {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:nil];
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
theAnimation.duration=0.2;
theAnimation.repeatCount=0;
theAnimation.autoreverses=NO;
theAnimation.fromValue=[NSNumber numberWithFloat:320];
theAnimation.toValue=[NSNumber numberWithFloat:0]
;
[cell.layer addAnimation:theAnimation forKey:@"animateLayer"];
}
Проблема в том, что ячейка скользит назад - я хочу сделать это, когда будет получено любое прикосновение за пределами представления меню, но, поскольку это scrollView, я не могу. Метод ScrollViewdidScroll анимирует ячейку обратно в ее обычное место только после прокрутки окна просмотра. (Например, под панелью навигации или объектом, скрывающим его). Последняя ключевая проблема - это возможность определить, является ли меню уже видимым или активным, а ячейка уже находится за пределами экрана, сдвинуть ячейку обратно в исходное положение, удалить меню, затем выдвиньте другую ячейку и добавьте меню.
Я хотел бы быть первым рядом с Лорен, который реализовал это, как и многие другие, особенно в StackOverflow.
Прошу прощения за плохое форматирование в коде.
Спасибо заранее,
Kolin