我有一個視圖,它是一個4x4的圖像網格,我試圖實現每個方塊的效果,從上到下,從左到右,翻轉顯示一個新的圖像。應該是一個「漣漪」效應,所以左上方正方形立即開始翻轉,0.05秒後的[0,1]方塊翻轉,0.10秒後的[0,2]等等,以便在(0.05 * 15)秒,最終的方塊開始翻轉。[UIView transitionWithView ...]的快速系列不順利
我的實現是這樣的:每個方格是一個UIView子類,DMGridSquareView,其中包含一個UIImageView,而下面的方法:
- (void)flipToNewImage:(UIImage*)img {
AATileView *mySelf = self;
[UIView transitionWithView:self.imageView
duration:0.4
options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
self.imageView.image = img;
} completion:^(BOOL finished) {
NSLog(@"Finished flip");
}];
}
然後,以觸發所有的方格的動畫,在DMGridView中,我稱這種方法爲:
- (void)flipAllSquares:(NSArray*)newImages {
int numTiles = self.numColumns * self.numRows;
for (int idx=0; idx<numTiles; idx++) {
UIImage *newImg = [newImages objectAtIndex:idx];
[[self.gridSquareViews objectAtIndex:idx] performSelector:@selector(flipToNewImage:) withObject:newImg afterDelay:(0.05*idx)];
}
}
當在模擬器上運行時,它的工作原理非常漂亮。但是在我的iPhone 5上運行時,它出乎意料(至少對我而言)的行爲。單個網格的動畫效果非常好,並且速度正確,但開始時間已關閉。它們以錯開的「塊」發生。所以前2個方格可能會立即翻轉,然後接下來的4個方格會在一會兒之後同時翻轉,然後下一個3個方格翻轉,等等。這是不一致的,但它總是像這樣的大塊。
任何想法如何解決這個問題?
謝謝。
問題在於我不希望它等到上一個完成。他們應該快速接班,就像「波浪」效應一樣。 – DanM
我發現後,我意識到。對於那個很抱歉。我一直在琢磨這一個,真的不知道爲什麼你會在模擬器和設備中獲得不同的結果。 – Chris
即使是怪物,它突然工作。我不信任它,因爲我實際上並沒有改變任何代碼......但是這裏一定有些奇怪的事情發生。如果我發現其他不尋常的事情,我會再次發帖... – DanM