2015-04-17 55 views
2

我從右向左滑動手勢後爲webview加載新內容。手勢執行後,webview加載其新內容。我該如何爲這個webview製作一個動畫,從而根據這個動作顯示一個「swap-away」webview的內容?所以,當用戶從右向左滑動時,webview也應該從右向左移動。最終「飛走」。我認爲一些音樂應用程序有這個地方,你可以通過刷一個來加載一個新的軌道。謝謝!用於Webview的滑動轉場動畫

回答

8

按照以下代碼,您可以使用單個UIWebView應用滑動動畫。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UISwipeGestureRecognizer *recognizerRight; 
    recognizerRight.delegate=self; 

    recognizerRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)]; 
    [recognizerRight setDirection:UISwipeGestureRecognizerDirectionRight]; 
    [webView addGestureRecognizer:recognizerRight]; 


    UISwipeGestureRecognizer *recognizerLeft; 
recognizerLeft.delegate=self; 
    recognizerLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeleft:)]; 
    [recognizerLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [webView addGestureRecognizer:recognizerLeft]; 


} 

現在在CATransition的幫助下應用滑動效果。

-(void)swipeleft:(UISwipeGestureRecognizer *)swipeGesture 
{ 


     CATransition *animation = [CATransition animation]; 
     [animation setDelegate:self]; 
     [animation setType:kCATransitionPush]; 
     [animation setSubtype:kCATransitionFromRight]; 
     [animation setDuration:0.50]; 
     [animation setTimingFunction: 
     [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
     [webView.layer addAnimation:animation forKey:kCATransition]; 



} 
-(void)swipeRight:(UISwipeGestureRecognizer *)swipeGesture 
{ 

     CATransition *animation = [CATransition animation]; 
     [animation setDelegate:self]; 
     [animation setType:kCATransitionPush]; 
     [animation setSubtype:kCATransitionFromLeft]; 
     [animation setDuration:0.40]; 
     [animation setTimingFunction: 
     [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
     [webView.layer addAnimation:animation forKey:kCATransition]; 


} 

希望這對你有所幫助。

+0

謝謝,我覺得很整齊。唯一的問題是在「新」視圖中看到「舊」內容很短的時間,然後加載webview的新內容。任何想法? – tyler

+1

編輯:好的,我添加這個以及清理之前刷卡內容: [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@「about:blank」]]]; – tyler

0

對於滑動手勢和加載新的內容,你可以使用:

UISwipeGestureRecognizer *swipeGR; 
    swipeGR = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeLeft)]; 
    swipeGR.direction = UISwipeGestureRecognizerDirectionLeft; 
    swipeGR.delegate = self; 
    swipeGR.numberOfTouchesRequired = 1; 
    [webview addGestureRecognizer:swipeGR]; 
+0

動畫不見了! – tyler

1

您將需要使用兩個UIWebViews中的一個是飛射而去,一個是新的內容。爲了讓它飛走,你可以使用諸如ZLSwipeableView之類的衆多庫中的一個。

同時,我會用第一個位置創建一個新的UIWebView。您應該首先使其不可見,並根據第一個視圖的移動使其可見性逐漸顯現。

+0

聽起來不錯。要測試一下。 – tyler