Страница свернута - для пейзажа влево и пейзажа вправо - PullRequest
2 голосов
/ 24 июля 2011

Я пытаюсь создать приложение для переворачивания страниц в xcode. Поворот страницы отлично работает для пейзажа вправо, но для пейзажа влево, сворачивание страницы происходит слева. Я добавил вид контейнера, а затем скручивание страницы на ландшафте слева начало происходить снизу, а не справа.

Я нашел несколько предложений здесь (/3743736/ispolzovat-animatsiy-prosmotra-izobrazhenii-pomoschy-uianimationtransitioncurl-vpravo-yavlyaetsya-vozmozhnym) и здесь (/3743736/ispolzovat-animatsiy-prosmotra-izobrazhenii-pomoschy-uianimationtransitioncurl-vpravo-yavlyaetsya-vozmozhnym)

)

но оба эти предложения были со старым стилем кода перехода страницы, а не с блочным кодом. Я пытался изменить их с помощью нового кода стиля блока, но он не работает для меня.

Я прилагаю свой код здесь:

- (void)viewDidLoad
{

    UIImage *img = [UIImage imageNamed:@"s1p1.png"];
    currentView.image = img;
    img = [UIImage imageNamed:@"s1p2.png"];
    swapView.image = img;

    UISwipeGestureRecognizer *nextPage;
    nextPage = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(turnPage)] autorelease];

    if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft) {
        [nextPage setDirection:UISwipeGestureRecognizerDirectionRight];
    }
    else {
    [nextPage setDirection:UISwipeGestureRecognizerDirectionLeft];
    }

    [self.view addGestureRecognizer:nextPage];

    [super viewDidLoad];
}

-(void) turnPage 
{

    if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft) 
    {
        NSLog(@"landscapeleft");
        mainView.transform = CGAffineTransformMakeRotation(M_PI);
        currentView.transform = CGAffineTransformMakeRotation(-M_PI); 
        swapView.transform = CGAffineTransformMakeRotation(-M_PI); 
        [UIView transitionWithView:mainView
                          duration:1
                           options:UIViewAnimationOptionTransitionCurlUp
                        animations:^{
                            currentView.hidden = YES;
                            swapView.hidden = NO;
                                    }
                        completion:^(BOOL finished){
                            UIImage    *temp = [currentView.image retain];
                            currentView.image = swapView.image;
                            swapView.image = temp;
                            [temp release];
                            currentView.hidden = NO;
                            swapView.hidden = YES;
                        }];

    }
    else
    {
        NSLog(@"landscaperight");
        [UIView transitionWithView:self.view
                          duration:1
                           options:UIViewAnimationOptionTransitionCurlUp
                        animations:^{
                            currentView.hidden = YES;
                            swapView.hidden = NO;
                        }
                        completion:^(BOOL finished){
                            UIImage    *temp = [currentView.image retain];
                            currentView.image = swapView.image;
                            swapView.image = temp;
                            [temp release];
                            currentView.hidden = NO;
                            swapView.hidden = YES;
                        }];

    }


}

, где у меня есть два представления: self.view - это первичное представление из окна, а затем mainView - это мое представление контейнера. currentView и SwapView - это изображения.

Есть мысли по этому поводу? Большое спасибо за просмотр этого.

...