2013-05-31 38 views
0

我試圖移動2次在一起:無法在2犯動畫的UIView

[UIView animateWithDuration:0.5 
        animations:^{ 
         [currentView setCenter:CGPointMake(currentView.center.x + currentView.frame.size.width, currentView.center.y)]; 
         [nextView setCenter:CGPointMake(nextView.center.x + nextView.frame.size.width, nextView.center.y)]; 
}]; 

但是,我不能設法去做。只有nextView正在移動。

如果我只提交一個動畫,它可以正常工作。

可能是什麼原因? 難道是因爲我的聲明:

nextView = [[UIView alloc] initWithFrame:currentView.frame]; 

回答

0

如果我讀這正確的,你有完全相同的框架2次,以完全相同的方式進行動畫。難道他們都在移動,但一個在另一個之上,所以你只能看到頂視圖?

+0

它們具有相同的初始化框架,但在屏幕左側設置「nextView」,所以它會顯示「推」效果 – zbMax

+0

如果是這種情況,那麼您發佈的代碼很好,錯誤是在別的地方。你能發佈更多的代碼嗎? – Gallonallen

0

我已經試過與此代碼:

CGRect currentFrame = currentView.frame; 
    currentFrame.origin.x = currentFrame.size.width; 
    CGRect nextFrame = nextView.frame; 
    nextFrame.origin.x = 0; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.4]; 
    [currentView setFrame:currentFrame]; 
    [nextView setFrame:nextFrame]; 
    [UIView commitAnimations]; 

但它具有相同的效果:動畫的「currentView」只有當它被動畫的唯一視圖進行。 (不含線[新思維SETFRAME:nextFrame])

具有斷點,我犯了動畫後打印我對視圖的描述:

Printing description of self->currentView: 
<UIView: 0x1dd67ab0; frame = (320 0; 320 416); autoresize = W+H; animations = { position=<CABasicAnimation: 0x1de35a40>; }; layer = <CALayer: 0x1de61380>> 
Printing description of self->nextView: 
<UIView: 0x1dde57e0; frame = (0 0; 320 416); animations = { position=<CABasicAnimation: 0x1de35a80>; }; layer = <CALayer: 0x1dd12520>> 

我currentView會去在右邊屏幕,但它沒有。

0

我找到了解決我的問題的方法。

我的兩個視圖之間的主要區別是一個是從.xib創建的,另一個是編程創建的。 而且一切工作通過寫

[currentView setTranslatesAutoresizingMaskIntoConstraints:YES]; 

那麼,有什麼東西在的.xib文件來更改,所以我也不會以編程方式設置這個面具。