2013-03-05 29 views
1

我試圖將modalviewcontroller的動畫設置爲false,並且幀調整不起作用,但是當我嘗試打開它時,動畫將正常工作。有沒有解決這個問題? 下面是我的代碼的上下文:如何在動畫關閉時修復modalviewcontroller的框架?

MyModal *modal = [[MyModal alloc] initWithNibName:@"MyModal" bundle:nil]; 
modal.modalPresentationStyle = UIModalPresentationFormSheet; 

modal.view.superview.frame = CGRectMake(0, 0, 458, 230); 
modal.view.superview.center = self.view.center; 

[self.navigationController presentModalViewController:modal animated:NO]; 

回答

0

你試圖做的是實際上是錯誤的。從你的代碼;

MyModal *modal = [[MyModal alloc] initWithNibName:@"MyModal" bundle:nil]; 
    modal.modalPresentationStyle = UIModalPresentationFormSheet; 

    modal.view.superview.frame = CGRectMake(0, 0, 458, 230); 
    modal.view.superview.center = self.view.center; 

    [self.navigationController presentModalViewController:modal animated:NO] 

上述代碼將永遠不會工作,因爲您正在設置尚未創建的視圖的框架。

因此,您只能在創建或呈現新視圖之後設置框架。 在你MyModal視圖 - 控制,設置在viewDidAppear框架(照顧不這樣做在viewWillAppear

- (void) viewDidAppear:(BOOL)animated 
{ 
     // code to set the frame here 

} 

希望這有助於。

+0

我一直把它放在viewWillAppear和viewDidload裏面,好像我忘記了viewDidAppear:D – Rye 2013-03-05 08:51:10

0

在我看來,你應該採取的代碼

modal.view.superview.frame = CGRectMake(0, 0, 458, 230); 
modal.view.superview.center = self.view.center; 

到MyModal的 - (無效)viewDidLoad中或 - (無效)viewWillAppear中的方法。

從nib啓動視圖需要比代碼更多的時間;在將視圖啓動到內存之前,nil modal.view的框架已經重置,然後加載nib的框架。當您關閉動畫時,動畫需要時間顯示,那麼,框架可以調整大小。

+0

的朋友,請添加此評論作爲評論。沒有答案。 – 2013-03-05 08:55:52

相關問題