2013-02-17 36 views
2

我正在嘗試一個簡單的項目(故事板),其中用戶從右到左滑動到下一個視圖等,並回到用戶從左到右滑動。 我想實現轉換以跟隨滑動(L→R或R→L)。自定義塞格推奇怪的行爲

我發現這一點:

-(void)perform { 

    UIViewController *sourceViewController = (UIViewController*)[self sourceViewController]; 
    UIViewController *destinationController = (UIViewController*)[self destinationViewController]; 

    CATransition* transition = [CATransition animation]; 
    transition.duration = .25; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
    transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 



    [sourceViewController.navigationController.view.layer addAnimation:transition 
                   forKey:kCATransition]; 

    [sourceViewController.navigationController pushViewController:destinationController animated:NO]; 

} 

但是這似乎並沒有做什麼是應該做的。

說明:

,當我在景觀M(我的項目只在景觀工程)和home鍵在左邊,動畫來自TOP! 當我在橫向和主頁按鈕在右側的動畫來自底部!

雖然我已經指定它是從左邊開始的。 另一件事是,當我使用不同風景(左側或右側的homebutton)時,它會改變方向。

任何想法爲什麼會發生這種情況???

回答

0

好吧,這是我是如何做到的,雖然非常不正統。

進出口檢查iPad的方向,然後而不是左或右im實際上去頂/底... 好吧,這是我是如何做到的,雖然非常不正統。

林檢查了iPad的方向,然後,而不是去左或右的IM真的要頂/底...

if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft) 
{ 
     //Landscape Left 

//....... 
     transition.subtype = kCATransitionFromTop; 

} 
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight) 
{ 
     //Landscape Right 

//...... 
     transition.subtype = kCATransitionFromBottom; 

} 
+0

我看到你在1分鐘前編輯過它,並刪除了我的評論。但說實話,我不認爲答案是一個意外,因爲那是26分鐘前,並且與您當前的答案內容沒有任何關係...... – 2013-02-17 21:41:39

+0

它意在成爲評論而不是答案,但是我也在搜索/測試/不安等問題與蘋果等無論如何抱歉,如果它造成你的麻煩..並感謝您的幫助... – 2013-02-17 21:47:28

0

是您在導航控制器的看法? 您是否嘗試過簡單地使用「push」風格的segue?

在你輕掃手勢識別,只要致電:

[self performSegueWithIdentifier:@"NextScreenIdentifier" sender:sender]; 

,你應該得到正確的行爲(左>右/右>左過渡)。

+0

是的即時通訊與導航控制。我不會在任何地方聲明我的滑動手勢識別器。它全部在IB和故事板 – 2013-02-17 21:37:34

+0

因此,只需控制 - 從滑動手勢識別器拖動到目標視圖,然後選擇「推送」。做相同的每個識別器(左和右)。既然你正在向左/向右過渡,它應該「只是工作」。 – Dave 2013-02-17 21:45:26

+0

我有「推動」前進。但是從R - > L滑動並且從L - > R出現的視圖非常不直觀 - 因爲這是您在推動的情況下得到的結果。 – 2013-02-17 21:49:25