Я проверял этот сайт на многие из моих вопросов раньше, но мне впервые приходится что-то задавать, поэтому я надеюсь, что смогу прояснить ситуацию достаточно.
У меня есть приложение, которое почти готово. Основной функционал работает. Я только заинтересован в том, чтобы сделать все приложение визуально привлекательным. Приложение представляет собой базу данных, которая содержит научные данные. Я хочу, чтобы пользователь мог хранить пользовательские данные в БД и для этого создал «контактное» представление, где пользователь может сохранить некоторые данные. Представление содержит таблицу, и внутри этой таблицы ячейка имеет UITextFields. После ввода данных, когда пользователь нажимает кнопку, я хочу анимировать содержимое textField в виде шкафа. Очень похоже на то, когда вы покупаете что-то в iTunes на устройстве iOS.
Я смог сделать эту анимацию в «статическом» виде (не в UITableView), играя с начальной точкой, конечной точкой и т. Д., Это немного болезненно, но в конце концов выполнимо.
Думаю, я делаю анимацию не совсем обычным способом, но на самом деле очень эффективно. При нажатии кнопки я создаю UILabel, я устанавливаю текст как текст textField, а затем я использую блок viewAnimationWithDuration для анимации метки. Внутри блока я также использую Core Animation для анимации слоя метки на пути. Снова, не обычный, но прямо вперед.
Проблема, с которой я столкнулся, заключается в том, что я не могу создать метку поверх textField, поскольку она находится в UITableView. Главным образом проблема заключается в том, чтобы узнать позицию (или фрейма, или границы, или позицию. Я действительно запутался) textField и, следовательно, начальную позицию пути.
Код, который я использую, выглядит следующим образом:
- (IBAction) saveCustom: (идентификатор) отправитель {
UILabel *imageViewForAnimation = [[UILabel alloc] initWithFrame:CGRectMake(l1, l2, l3, l4)];
imageViewForAnimation.text=label.text;
imageViewForAnimation.alpha = 1.0f;
imageViewForAnimation.backgroundColor=[UIColor clearColor];
imageViewForAnimation.textColor=[UIColor blackColor];
imageViewForAnimation.adjustsFontSizeToFitWidth=YES;
[self.view addSubview:imageViewForAnimation];
[UIView animateWithDuration:10.0
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
// Set up path movement Core Animation begins
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGPoint endPoint = CGPointMake(310, 380); // final point
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPoint rootViewPoint = [imageViewForAnimation convertPoint:imageViewForAnimation.center toView:taula];
CGPathMoveToPoint(curvedPath, NULL, rootViewPoint.x, rootViewPoint.y); // initial point
CGPathAddCurveToPoint(curvedPath, NULL, 100, 100, 100, 100, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
pathAnimation.fillMode=kCAFillModeForwards;
pathAnimation.removedOnCompletion=NO;
pathAnimation.duration=10.0f;
pathAnimation.delegate=self;
[imageViewForAnimation.layer addAnimation:pathAnimation forKey:@"savingAnimation"];
[imageViewForAnimation release];
//Core Animation ends
imageViewForAnimation.transform=CGAffineTransformMakeScale(0.60, 0.60);
// imageViewForAnimation.alpha=0.2;
}
completion:^(BOOL finished){
[imageViewForAnimation removeFromSuperview];
} ];
}
Любая помощь о том, как действовать, будет высоко ценится.
Заранее спасибо!
UPDATE:
Я ходил на Apple Tech Talks в Берлине. В лабораториях, которые они получили, я спросил об этом инженера. Он задавался вопросом, что код, который я ему показал, не работает. Я написал ему по электронной почте, и он вернется ко мне.
Ключевым моментом является преобразование координат из таблицы в представление.