Комплекс CATransition

Я пытаюсь создать CATransition для UIView.

Я хочу переместить UIView вправо и в то же время (и всегда в одной и той же точке) повернуть его.

Это лучше объясняется изображением.

Я могу двигать его с помощью CATransition, а также вращать с помощью CABasicAnimation, но я не знаю, как это сделать вместе.

Спасибо.

Сложный переход


person saimonx    schedule 04.05.2011    source источник
comment
Вы хотите, чтобы он проходил с L-образной формой между ними?   -  person    schedule 04.05.2011
comment
да, как на картинке   -  person saimonx    schedule 04.05.2011


Ответы (2)


-(void)scaleAndRotate:(UIImageView*)myView andAngle:(float)angle {

CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.5,1.5);
CGAffineTransform rotateTrans =CGAffineTransformMakeRotation(angle * M_PI / 180);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
myView.transform = CGAffineTransformConcat(scaleTrans, rotateTrans);
[UIView commitAnimations];

}

В приведенном выше методе: замените & на то, что вы хотите ... Это, безусловно, сработает :) Всего наилучшего

person Abhishek Bedi    schedule 24.05.2011

Вам следует подумать о том, чтобы сделать две копии изображения, повернуть одну и замаскировать их обе, чтобы их можно было разместить рядом друг с другом в форме буквы L.

Используя эту технику, вы будете делать два перемещения одновременно (перемещая маску и основное изображение) к обоим изображениям A и T. Но обратите внимание, что вращение не будет анимировано. Вы немедленно поместите изображение T в повернутое состояние и просто покажете его, переместив его под маску (одновременно делая противоположное на изображении A, чтобы скрыть его). Таким образом, вы на самом деле не объединяете перемещение и вращение в одну анимацию, а используете просто перемещение с маской как на исходном изображении (A), так и на повернутой копии (T).

Вам нужно будет замаскировать левую сторону одного и правую сторону другого. Форма маски должна иметь противоположный угол 45 градусов на обоих, затем вы можете соединить эти угловые края вместе, чтобы сформировать L. С течением времени вы просто перемещаете маску в каждом, пока первое изображение полностью не исчезнет, ​​и вы осталось с вашим конечным состоянием.

Маскирующая часть - сложная часть. См. этот ответ о маскировании UIImage с помощью CoreGraphics: маскирование UIImage

Маска PNG будет в основном просто прямоугольником с одной стороной под углом 45 градусов. Вы можете создать это в редакторе изображений по вашему выбору (Photoshop, GIMP, Acorn).

Примечание: этот подход создаст острый край в углу. Другой подход состоит в том, чтобы деформировать пиксели вокруг этого угла, когда они перемещаются от вертикального движения вниз к горизонтальному движению вправо. (Я думаю) Это было бы намного сложнее.

person RickDT    schedule 04.05.2011
comment
Не уверен, о какой части вы спрашиваете, но я угадаю часть маскировки, так как это самое сложное. См. этот вопрос/ответ о маскировании UIImage с помощью CoreGraphics: stackoverflow.com/questions/2776747/masking-a-uiimage< /а> - person RickDT; 05.05.2011