2013-08-16 33 views
2

我想知道是否有可能 - 如果是這樣 - 如何 - 將兩個不同視圖中的兩個圖層「鏈接」或鏈接在一起,以便當其中一個圖層移動時(因爲它正在動畫),它「拖拽」其他層在相同的方向和相同的時間。如何從兩個不同的視圖層次中「鏈接」兩層?

我想這樣做的原因是因爲我有兩個半透明的視圖,兩個都是相同的大小,最初是一個在另一個之上,但在某些時候最頂層的視圖是動畫的,我需要掩蓋內容與最頂層的'形狀'的底部視圖。我已經爲底部視圖創建了一個與頂部視圖大小相同的圖層蒙版,但是我需要在啓動圖層蒙版時將其拖動。

最佳,

回答

0

沒有辦法聽,可以這麼說,對於發生的動畫,但是,您可以設置顯示的鏈接,然後勾選/輪詢層是否有任何的動畫。我認爲這會造成很多開銷,但它可能會給你你想要的東西。

我可能更喜歡同時爲兩個圖層設置動畫。我不知道什麼事件觸發了一個圖層,在您的場景中開始製作動畫,但是在那裏我會嘗試對第二個圖層進行動畫製作。

如果你想嘗試去顯示鏈接路線,你可以這樣做:

CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self 
                 selector: 
                   @selector(
                 displayLinkDidUpdate:)]; 

// Add to the run loop 
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] 
        forMode:NSDefaultRunLoopMode]; 

然後,實現顯示的更新方法:

- (void)displayLinkDidUpdate:(CADisplayLink *)sender 
{ 
    CALayer *presentationLayer = (CALayer*)[_animatingLayer presentationLayer]; 

    // Do something with the presentation layer 

} 

如果圖層動畫,演示圖層將具有當前的飛行中動畫值。