UIView 3DCube, как Clear-приложение - PullRequest
6 голосов
/ 23 февраля 2012

Я обыскал все посты в google и stackoverflow, но я просто не могу решить эту головоломку.Я пытаюсь воссоздать эффект, который дает теперь известное приложение todo «Очистить» при добавлении новой задачи.У них есть какая-то анимация, с которой сверху появляется новое задание с эффектом 3D-куба.Особенность их заключается в том, что при внимательном рассмотрении левый и правый нижние углы всегда остаются на одном месте.

Прямо сейчас у меня есть следующее: один UIView 320x460, установленный в точке 0,0, и один UIView 320x460, установленный в точке (0, -460).Я хочу, чтобы верхний UIView спускался в том же кубе-эффекте, что и Clear сверху.Вот что у меня есть:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //startLoc is defined globally to remember the first position
    startLoc = [[touches anyObject] locationInView:self];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint location = [[touches anyObject] locationInView:self];
    float difference = location.y-startLoc.y;         

    if(diff > 0 && diff < 90)
    {
        //Init the transform
        CATransform3D transform = CATransform3DIdentity;
        transform.m34 = perspective;
        //Rotate (radians is a degree-to radians function)
        transform = CATransform3DRotate(transform, radians(90-diff), 1.0f, 0.0f, 0.0f);
        //Also translate the view down        
        transform = CATransform3DTranslate(transform, 0.0f, 230+diff, 0.0f);
        //the 230 is necessary I think for the Anchorpoint but I'm not sure
        secondView.layer.transform = transform;
}    

}

Работает как-то, но не правильно, как только я делаю поворот, вид становится больше, а левый нижний и правый нижний углывне поля зрения.Если я уменьшу изображение, а затем сделаю 3D-шкалу, это тоже испортится.Я уже решил проблему исчезновения половины изображения, правильно настроив zPosition для слоев, но это насколько я понимаю.Я пытался использовать код из других проектов, но все их эффекты 3D-куба не совпадают с «Clear» App.Единственный, который подходит близко - это проект iCarousel, но я не могу использовать правильный код из приложения, я не могу заставить его работать.Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 04 мая 2012

Вы можете взглянуть на реализацию с открытым исходным кодом на GitHub mystcolor / JTGestureBasedTableViewDemo

2 голосов
/ 24 февраля 2012

Вот некоторые ссылки, которые конкретно охватывают тему перспективных преобразований UIView 3D:

http://www.sunsetlakesoftware.com/2008/10/22/3-d-rotation-without-trackball

http://watchingapple.com/2008/04/core-animation-3d-perspective/

Этот пост также актуален: Как мне применить перспективное преобразование к UIView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...