簡體   English   中英

如何在不使用兩個視圖控制器的情況下為兩個視圖之間的過渡設置動畫?

[英]How to animate transition between two views without using two view controllers?

我正在嘗試模擬一副紙牌,其中在屏幕上滑動可使下一張紙牌從右側進入顯示,覆蓋當前可見的紙牌。 我知道如何使用兩個視圖控制器和自定義序列進行編程,但是我想保持簡單。 因此,我想留在一個相同的視圖控制器中,將當前視圖復制到一個臨時視圖中,繪制新視圖,然后為新視圖設置動畫,以從右側向后漂移並覆蓋舊視圖。 這是我的嘗試:

- (IBAction)SwipeLeft:(id)sender
{   UIView *sv = self.view;
    [self Layout]; // this is where the next card is drawn
    UIView *dv = self.view;

    dv.center = CGPointMake(sv.center.x + sv.frame.size.width, sv.center.y);
    sv.center = CGPointMake(sv.center.x, sv.center.y);

    [UIView animateWithDuration:0.3
                     animations:^
     {   dv.center = CGPointMake(sv.center.x, sv.center.y);
         sv.center = CGPointMake(sv.center.x - sv.frame.size.width, sv.center.y);
     }];

    NSLog(@"Swipe left");
}

當我運行此代碼時,我確實看到新卡已正確進入屏幕,但是,“舊”視圖立即消失,並在動畫開始之前變成黑屏。

我該如何糾正?

顯然,此代碼不起作用,因為兩個指針都指向相同的存儲位置。 我決定以其他方式解決我的問題。 我創建屏幕快照,而不是嘗試復制View對象,而是將UIImage復制到View對象中,在繪制新屏幕時覆蓋舊屏幕副本下的屏幕,而不是對該View對象進行動畫處理。 可能是更智能的解決方案。 效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM