2014-10-09 71 views
1

我已經實現了一個自定義的segue類來模擬沒有導航欄的push轉換。訣竅是拍攝快照,將它們添加到視圖中,替換viewController,移動快照並最終刪除它們。這模仿了viewController的水平移動,但實際上只移動了兩個UIImagesView。UIView animateWithDuration在ios8中沒有動畫效果

下面的代碼實現了這一點。

self.destinationImageView.frame = offsetFrameD; 
self.sourceImageView.frame = offsetFrameS; 

//ViewController replacement 
[self.sourceViewController presentModalViewController:self.destinationViewController animated:NO]; 

//Overpose the snapShot who will simulate the transition between vies. 
[destinationView addSubview: self.sourceImageView]; 
[destinationView addSubview: self.destinationImageView]; 

[UIView animateWithDuration:1.0 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseOut 
       animations:^{ 
        self.destinationImageView.frame = self.finalFrameD; 
        self.sourceImageView.frame = self.finalFrameS; 
       } 
       completion:^(BOOL finished) { 
        [self.sourceImageView removeFromSuperview]; 
        [self.destinationImageView removeFromSuperview]; 
       }]; 

此代碼與iOS 7一起使用。但是,使用iOS 8時,似乎不執行動畫。 destinationImageView和sourceImageView直接移動到finalPosition(WITHOUT ANIMATING)並且不調用完成塊,所以兩個UIImageView都不會最終被刪除。

有誰知道應該如何使用iOS 8執行動畫?

+0

您是否啓用了自動版式?您是否在故事板中啓用了尺寸類別? – Fogmeister 2014-10-09 11:24:00

+0

看看這個問題,它可能會幫助你:http://stackoverflow.com/questions/24472663/ios-8-animation-bug – BoilingLime 2014-10-09 11:26:39

回答

-2

使用下面的代碼行動畫開始之前:

[UIView setAnimationsEnabled:YES]; 
+0

在開始動畫之前使用這行代碼寫這行代碼。 – Anz 2016-02-09 13:38:01

+0

[UIView setAnimationsEnabled:YES]; [UIView animateWithDuration:3.0動畫:^ { }完成:^(BOOL完成){ }]; – Anz 2016-02-09 13:38:49

相關問題