2015-08-19 59 views
1

我有一個UIView。我設置了其在viewDidLayoutSubviews方式的位置在我的代碼:當UICollectionView滾動時UIView動畫停止工作

self.displayView.frame = CGRectMake(-self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height); 

和上的按鈕來顯示這種觀點的動畫是爲已完成的按如下:

[UIView animateWithDuration:0.25 animations:^{ 
    self.displayView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
}]; 

我也有一個UICollectionView相同的頁面。 上述動畫完美工作,直到我開始滾動UICollectionView。如果我滾動UICollectionView,然後單擊上述動畫發生的按鈕,它不起作用。我在animateWithDuration塊前後檢查了displayView的位置,並顯示了完全相同的位置。 (displayView的x和y座標不變) 試圖弄清楚我已經搞亂了什麼。任何幫助,將不勝感激。

+0

您是否嘗試刪除'viewDidLayoutSubviews'中的'self.displayView.frame'?而且會發生什麼? – anhtu

回答

0

問題是viewDidLayoutSubviews在滾動UICollectionView的過程中被多次調用。因此,它會嘗試到您的視圖重新定位回:

self.displayView.frame = CGRectMake(-self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height); 

相反,嘗試上面設置內viewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.displayView.frame = CGRectMake(-self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height); 
} 

作爲測試,我設置了一個按鈕,它在被點擊,將按照您的指定動畫一個視圖,如同一個frameposition

視圖移入,而不管UICollectionView的滾動狀態如何。

我都試過了,也建立在動畫視圖本身敲擊手勢識別動畫它回到它的後期動畫frameposition即使UICollectionView被滾動:

self.displayView.frame = CGRectMake(-self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height); 

而且動畫不受滾動的影響,因爲frame的設置已移至viewDidLoad