Я работаю над новым приложением и действительно надеялся внедрить салфетки, чтобы открыть больше меню опций внутри моего приложения. Я искал и искал, но, похоже, никто другой не смог заставить его работать (кроме Лорена). То, что я пытаюсь сделать, это пронести по ячейке и одновременно использовать CABasicAnimation, чтобы нажать ее на x: 320, и добавить подвью ниже, чтобы иметь кнопки и т. Д. Я использую willBeginEditing для обнаружения салфетки, чтобы избежать подкласса , Вот код:Проведите, чтобы показать меню, подобное Tweetie
- (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 только оживляет ячейку до ее обычного места после прокрутки окна просмотра. (Как и в разделе NavigationBar или объект, который его закрывает). Последней ключевой проблемой является способность обнаруживать, что меню уже видно или активно, а ячейка уже отключена от экрана, сдвиньте ячейку обратно в исходное положение, удалите меню, а затем сдвиньте другую ячейку и добавьте меню.
Я хотел бы быть первым рядом с Лореном, чтобы реализовать это, так как многие другие пытались, особенно на StackOverflow.
Прошу прощения за плохое форматирование кода.
Спасибо заранее, Kolin
Что вы описываете, как то, что происходит в facebook, когда вы нажимаете кнопку «+» на столбе, которая отображается как кнопки комментариев. Вы можете взглянуть на http://github.com/facebook/three20, если вы еще этого не сделали. –