У меня есть проблема, которая, надеюсь, имеет простое решение. Я пытаюсь создать эффект качания с помощью кнопки, таймера, рамки, cgaffinetransformrotations и задержек. Все было бы замечательно, за исключением того, что когда кнопка поворачивается, и я устанавливаю рамку кнопки для уменьшения или увеличения y на 10 пикселей или около того, вращение делает рамку кнопки больше, чем обычно. Конечным результатом является кнопка, которая постоянно растет, пока она не проглатывает экран.Только набор CGPoint кадра
Я пробовал делать cgaffinetranslations с восходящим и нисходящим движениями, но для этого используется свойство transform (которое является тем же, что использует поворот). Результат - очень нервный и нереалистичный боб.
То, что я пытаюсь выполнить, - это просто установить исходный компонент кадра без указания ширины и высоты, потому что даже указание жестко закодированной ширины и высоты все же заставляет его сжиматься, когда оно вращается и растет, когда он снова приближается к равновесию.
Любые идеи?
Спасибо!
КОД:
- (void)movePlay{
[self performSelector:@selector(moveDown:) withObject:play];
[self performSelector:@selector(rotateRight:) withObject:play afterDelay:0];
[self performSelector:@selector(moveUp:) withObject:play afterDelay:0.5];
[self performSelector:@selector(rotateLeft:) withObject:play afterDelay:1];
}
- (void)moveUp:(UIButton*)log{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.5];
log.transform = CGAffineTransformMakeTranslation(0, -20);
[UIView commitAnimations];
}
- (void)rotateRight:(UIButton*)log{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
log.transform = CGAffineTransformMakeRotation(0.0174532925*10);
[UIView commitAnimations];
}
только намеком из справочной библиотеки IOS: «Внимание! Если свойства преобразования не является преобразованием личности, значения этого свойства (кадр) не определено, и поэтому его следует игнорировать ». Смысл, вы должны, вероятно, установить границы, а не кадр. – lukasz