[英]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.