2013-08-02 28 views
0

我在故事板中通過segue鏈接了兩個View Controller。第一個視圖控制器做了一個動畫,它將UIImage從中間滑動到屏幕的頂部,然後顯示一個UIButton,這一切都很好。但是,當按鈕被觸摸時,我執行一個segue,將模式中的第二個視圖控制器顯示出來。但是當第二個視圖控制器向上滑動屏幕時,我可以看到UIImage返回屏幕中間,就像它在動畫之前一樣。在iOS中,動畫視圖在手動調用segue後返回到其原始狀態

這是它:

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.willAnimate=YES; 
} 

- (void)viewDidAppear:(BOOL)animated{ 
    if (self.willAnimate) [self animate]; 
} 
- (void) animate{ 
    if (self.willAnimate){ 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:1.8]; 
      //hide button first 
      [UIView beginAnimations:nil context:NULL]; 
      [UIView setAnimationDuration:0.1]; 
      self.myButton.alpha=0; 
      [UIView commitAnimations]; 

     //move background 
     CGRect imgRect = self.myImageView.frame; 
     imgRect.origin.y-=200; 
     self.myImageView.frame=backgroundRect; 

     //restore button 
      [UIView beginAnimations:nil context:NULL]; 
      [UIView setAnimationDuration:0.5]; 
      [UIView setAnimationDelay:1.8]; 
      self.myButton.alpha=1; 
      [UIView commitAnimations]; 
     [UIView commitAnimations]; 
     self.willAnimate=NO; 
    } 
} 

- (IBAction)myButtonPressed { 
    [self performSegueWithIdentifier:@"mySegue" sender:self ]; 
} 

這是發生因爲SEGUE是從故事板加載第一視圖控制器?如何在視圖控制器之間來回切換離開圖像,就像在動畫之後一樣?

回答

4

這可能是由於自動佈局。當您在開啓自動佈局的情況下更改框架時,任何其他需要系統重新佈置視圖的操作都會導致框架回復到由約束定義的框架。因此,您應該關閉自動佈局,或者通過修改佈局約束來更改原點。當您使用自動佈局時,您不應該進行任何框架設置,只能修改約束。

+0

你說得對,我從故事板中刪除了UIImageView的UIBUtton,並以編程方式創建它們,現在它的一切都變好了。 – user1736003

相關問題