2015-06-20 91 views
1

我已經在兩個視圖控制器之間實現了交互式轉換,使用手勢識別器和UIPercentDrivenInteractiveTransition。我正在做自定義滑動轉換。與滾動視圖類似的交互式轉換

我想提高兩件事情,以便有類似滾動型動畫:

  1. 響應能力。當你平移超快和短時,下一個VC甚至沒有顯示,加上一個錯誤(animationEnded不叫,但這是另一回事) 有沒有辦法預先加載下一個視圖控制器,讓它作爲一個孩子視圖控制器可能是?看來我在viewDidLoad中做了太多工作。

  2. 在我的實現中,當手勢識別器結束時,我打電話給finishInteractiveTransition。這工作正常,但如果你在這個轉換完成之前開始一個新的平移手勢,UI只是跳轉而不是平滑滾動。所以可能是我應該在延遲後打電話finishInteractiveTransition,並在此期間手動撥打updateInteractiveTransition

可能我可以使用另一個API集具有交互式動畫(但scrollview不是一個選項)?

僅供參考:這裏是我的互動刷卡時視圖層次,我的姿態連接到導航視圖:

during interactive swipe

+0

聽起來真棒想法 –

+0

是你的問題解決了 –

回答

2

嘗試繼承UIPercentDrivenInteractiveTransition和實現這些方法。這將有助於理順了抽搐:

- (void)startInteractiveTransition:(id<UIViewControllerContextTransitioning>)transitionContext 
{ 
    [super startInteractiveTransition:transitionContext]; 
    self.layer = transitionContext.containerView.layer; 
} 

- (void)finishInteractiveTransition 
{ 
    [super finishInteractiveTransition]; 
    self.layer.speed = 1; 
    self.layer.beginTime = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - self.layer.timeOffset; 
} 

- (void)cancelInteractiveTransition 
{ 
    [super cancelInteractiveTransition]; 
    self.layer.speed = -1; 
    self.layer.beginTime = CACurrentMediaTime(); 
} 
+0

會是什麼self.layer考慮我視圖層次結構(UIPercentDrivenInteractiveTransition沒有它)?如果我將一些代碼提取到github上的工作項目,可能會最好? –

+0

self.layer在摘錄中分配。 – rounak

+0

嗨,@rounak你能解釋一下self.layer的例子嗎?有趣的吧! – saiday