Сохранить эффект скручивания анимационной страницы в iOS - PullRequest
1 голос
/ 13 сентября 2011

Я сам создаю простую программу для чтения PDF.

Хорошо работает в симуляторах и iphone, ipad. Но у меня была проблема.

Сгибание страницы работает хорошо, но если вы прекратите касание, страница сразу же перевернется.

С момента окончания сенсорного события я хочу анимацию смены страницы в течение 0,5 секунды.

Вот мой код. Спасибо.

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
        filter = [[CAFilter filterWithType:kCAFilterPageCurl] retain];
        [filter setDefaults];

        //lastPos save the touchesBegan location;
        //currentPos is a current location; 
        CGFloat _angleRad = angleBetweenCGPoints(currentPos, lastPos);
        CGPoint fingerVector = vectorBetweenPoints(currentPos, lastPos);
        float distanceVecX = -fingerVector.x/windowbounds.size.width;

        if(m_bCurlprev)
        {
                [filter setValue:[NSNumber numberWithFloat:_angleRad] forKey:@"inputAngle"];
                pdfView.layer.filters = [NSArray arrayWithObject:filter];
                [filter setValue:[NSNumber numberWithFloat:distanceVecX] forKey:@"inputTime"];
        }
        else{
                if(inputTime == 0) 
                        [self addSubview:forwardPDFView];
                [filter setValue:[NSNumber numberWithFloat:_angleRad] forKey:@"inputAngle"];
                forwardPDFView.layer.filters = [NSArray arrayWithObject:filter];
                [filter setValue:[NSNumber numberWithFloat:distanceVecX] forKey:@"inputTime"];
        }
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
        if ([[filter valueForKey:@"inputTime"] floatValue] >= 0.5)
    {   
        [filter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputTime"];
        if(m_bCurlprev==NO)
        {
            pdfView.layer.filters = nil;
            [self nextView];
        }
        else
        {
            pdfView.layer.filters = nil;
            [forwardPDFView removeFromSuperview];
            m_bCurlprev = NO;
        }
    }
    else if ([[filter valueForKey:@"inputTime"] floatValue] != 0.0 || m_bCurlprev==YES)
    {   
        [filter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputTime"];
        if(m_bCurlprev==YES)
        {
            pdfView.layer.filters = nil;
            [forwardPDFView removeFromSuperview];
            [self prevView];
            m_bCurlprev = NO;
        }
        else
        {
            pdfView.layer.filters = nil;
        }

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