#iphone #objective-c #cocoa-touch #uiviewanimation
#iPhone #objective-c #cocoa-touch #uiviewanimation
Вопрос:
Я думаю, это довольно просто, но мне было интересно, есть ли простой способ анимировать весь кончик на экране… идет справа. В идеале, я бы хотел, чтобы он немного подпрыгивал, когда останавливается (т. Е. Если предполагается, что кончик прокручивается до положения X = 0, я бы хотел, чтобы оно было немного отрицательным, прежде чем возвращаться к 0).
Это то, что у меня есть на данный момент:
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
TabsEdit *tEdit = [[TabsEdit alloc] initWithNibName:@"TabsEdit" bundle:nil];
self.tabsEdit = tEdit;
[self.view addSubview:tEdit.view];
[tEdit release];
}
completion:^(BOOL finished){
}
Есть ли какое-нибудь простое решение или мне нужно будет анимировать каждый отдельный элемент кончика, чтобы он был виден, а затем добавить к нему свой небольшой эффект отскока?
Я был бы благодарен за любые предложения о том, как добиться этого эффективно.
Ответ №1:
Чтобы получить более сложную анимацию (если вы хотите, чтобы в букете было больше сегментов), вам следует перейти на уровень CoreAnimation и определить ключевые кадры. У других есть серия встроенных animateWithDuration / Completions, каждый из которых выполняет свою часть отскока). Если все элементы представления являются вложенными представлениями, то при анимации представления за ними последуют его вложенные представления.
Комментарии:
1. Спасибо. Как я делал с КОНЧИКОМ в IB, я предполагаю, что все элементы являются подвидами представления. Но как я получу самую базовую анимацию, скажем, перемещения КОНЧИКА из X = 320 в X = 0? Извините, если это элементарно, но я попробовал tabsEdit.transform = CGAffineTransformMakeTranslation(-320, 0); и это действительно не сработало.
2. внутри вашего анимационного блока просто установите рамку в то место, в котором вы хотите, чтобы она заканчивалась в конце анимации: view.frame = CGRectMake(0.0f, view.frame.origin.x, .view.frame.size.width, view.frame.size.height); пример ниже… не отскакивает всего на одно движение
Ответ №2:
повторите одно движение, чтобы подпрыгнуть.
[UIView beginAnimations:@"move" context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.25];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
if(movingIn){
view.frame = CGRectMake(0.0f, view.frame.origin.x, .view.frame.size.width, view.frame.size.height);
}else{
view.frame = CGRectMake(320.0f, view.frame.origin.x, .view.frame.size.width, view.frame.size.height);
}
[UIView commitAnimations];