CALayer Animation - PullRequest
       20

CALayer Animation

0 голосов
/ 01 июня 2011

Я новичок, и я пытаюсь продолжить знакомство с CALayer ...

Еще раз спасибо @Alexsander Akers, @DHamrick и @Tommy, потому что теперь я могу исказить свои CALayer!

Это выглядит так:

capt 1

Я бы хотел переместить палец на Грей UIViewtouchesBegan / touchesMoved / touchesEnded) и мои «карты» двигаются следующим образом: (Например, если я перемещаю свой палец влево)

  • желтая карточка исчезает, а зеленая занимает место
  • белые берут зеленыеместо
  • красный белый
  • синий красный
  • и вместо синей карты появляется черная ...

Может быть, яЯ мечтаю, и мне тяжело, но если ты сможешь дать мне совет, я приму это!

спасибо!

1 Ответ

0 голосов
/ 04 января 2012

Вы можете использовать настраиваемую функцию следующим образом:

- (void)moveAndRotateLayer: (CALayer *)layer withDuration:(double)duration degreeX:(double)degreeX y:(int)degreeY angle:(float)angle autoreverseEnable:(BOOL)ar repeatTime:(int)repeat andTimingFunctionType:(NSString *)type
{
    // You should type the timing function type as "Liner", "EaseIn", "EaseOut" or "EaseInOut".
    // The default option is the liner timing function.
    // About these functions, look in the Apple's reference documents.

    CAAnimationGroup *theGroup = [CAAnimationGroup animation];

    CGPoint movement = CGPointMake(layer.position.x + degreeX, layer.position.y + degreeY);
    NSArray *animations = [NSArray arrayWithObjects:[self moveLayers:layer to:movement duration:duration], [self rotateLayers:layer to:angle duration:duration], nil];

    theGroup.duration = duration;
    theGroup.repeatCount = repeat;
    theGroup.autoreverses = ar;

    if ([type isEqualToString:@"EaseIn"]) 
    {
        theGroup.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseIn];
    }
    else if ([type isEqualToString:@"EaseOut"]) 
    {
        theGroup.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut];
    }
    else if ([type isEqualToString:@"EaseInOut"]) 
    {
        theGroup.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
    }
    else
    {
        theGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    }

    theGroup.animations = [NSArray arrayWithArray:animations];

    [layer addAnimation:theGroup forKey:@"movingAndRotating"];
}

Это решение анимации только для перемещения и вращения слоя,

, но я знаю, что вы можете настроить себя.

Это очень хорошо для тебя.Вы можете сделать это.

Удачи!

...