2013-05-15 31 views
0

我正在使用CATranstion動畫在UIWebView中的多個HTML頁面之間移動。CATransition在所需的視圖中顯示動畫

[WebView loadHTMLString:htmlPage baseURL:nil]; 
      CATransition *animation = [CATransition animation]; 
      [animation setType:kCATransitionPush]; 
      [animation setSubtype:kCATransitionFromLeft]; 
      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; 
      [animation setSpeed:0.3]; 
      [[WebView layer] addAnimation:animation forKey:nil]; 
      [UIView commitAnimations]; 

網絡視圖不顯示在iOS設備屏幕的整體中,它顯示在它的中間。問題是,執行轉換時,文本顯示在Web視圖外,我想要的是動畫不會超出Web視圖。 請你幫忙。

回答

2

這是CATransition如何工作的方式之外的文本。

我建議您添加UIWebView作爲某個容器視圖的子視圖,併爲容器視圖設置clipsToBounds = YES。它應該像你想要的那樣工作。

嘗試是這樣的:

UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(60, 60, 200, 200)]; 
containerView.clipsToBounds = YES; 
[self.view addSubview:containerView]; 

_webView = [[UIWebView alloc] initWithFrame:containerView.bounds]; 
_webView.backgroundColor = [UIColor redColor]; 
[containerView addSubview:_webView]; 

你的過渡代碼是OK,這應該做你想做的

簡化了所發生的事情說明:過渡,使層的「位圖截圖」前後動畫之後。然後製作動畫。在你的情況下,它得到2個位圖,將新的位置放在舊位置的左邊,然後將舊位置「推」到右邊。

+0

它工作完美,謝謝 – MahdiS

1

我並不完全確定自己正確理解了您的問題,但聽起來好像您只想爲網絡視圖中的內容製作動畫。如果是這樣的話,最好使用JS和CSS動畫,而不是使用Core Animation。目前,您正在操作整個UIWebView,並且該API不允許您訪問DOM以外的內容。

+0

您的理解是正確的,我只想在UIWebView內部進行動畫製作,我不喜歡文字出現在它之外。我不知道如何使用JavaScript來做到這一點,但更清楚的是,動畫是在兩個html頁面之間切換,這是可行的嗎? – MahdiS

0

,我發現一個解決辦法是添加兩個虛擬視圖背景清晰的隱藏顯示的Web視圖

相關問題