Могу ли я сделать половину трансформации M34 - PullRequest
1 голос
/ 28 сентября 2011

Я хочу сделать полный поворот, но с перестановкой изображения на полпути, и я не могу этого сделать. Полный поворот можно увидеть ниже. Как я могу сделать половину этого, но с хорошим материалом оси Z? Это в блоке animateWithDuration (iOS4)

// Create perspective transformation
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0f / -zDistance;
myView.layer.transform = transform; //- 3d
myView.layer.transform = CATransform3DMakeRotation(M_PI, -1, 0, 0); 

1 Ответ

2 голосов
/ 29 декабря 2011

Вы можете сделать это с двумя блоками:

// Rotate the second 'backside' view to 90 degrees and hide it
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0f / -zDistance;
mySecondView.layer.transform = transform;
mySecondView.layer.transform = CATransform3DMakeRotation(M_PI / 2, -1, 0, 0);
mySecondView.hidden = YES;

// Animate to 90 degrees
[UIView animateWithDuration:0.5 animations:^{
    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = 1.0f / -zDistance;
    myView.layer.transform = transform;
    myView.layer.transform = CATransform3DMakeRotation(M_PI / 2, -1, 0, 0);

} completion:^{

    // Switch to the backside view
    myView.hidden = YES;
    mySecondView.hidden = NO;

    // Animate the remaining 90 degrees
    [UIView animateWithDuration:0.5 animations:^{
        CATransform3D transform = CATransform3DIdentity;
        transform.m34 = 1.0f / -zDistance;
        mySecondView.layer.transform = transform;
        mySecondView.layer.transform = CATransform3DMakeRotation(M_PI, -1, 0, 0);
    }
}

Вы также можете поэкспериментировать со свойством myView.layer.isDoubleSided, которое скрывает заднюю часть вида - хотя вам все равно придется переключать hiddenпометьте в конце анимации, в противном случае кнопки первого вида будут по-прежнему активными.

Надеюсь, это поможет!Спасибо.

...