2010-04-11 50 views
1

如何通過addSubview像presentModalViewController那樣獲得UIView轉換?可用的動畫似乎沒有這樣做。addSubview like modal

我會使用模式,但我有一個導航欄在頂部,並不想禁用它。此外,導航欄上的模式疊加。如果有辦法讓模式不禁用導航欄,我可以採用這種方法。但既然它是一種模式,我不認爲這是可能的。

回答

0

如果您將presentModalViewController與任何UIViewController作爲參數使用,您將在此處有@property(nonatomic, readonly, retain) UINavigationItem *navigationItem,您可以使用它複製或創建導航欄。

+0

你能不能給如何可能做一個假的例子嗎? – user230949 2010-04-11 19:26:03

+0

我可以創建一個新的UINavigationController並使用父UIViewController初始化它,但是因爲它是隻讀的,所以我無法將父導航欄指定給模式。即使我嘗試像這樣newNavigationController.navigationItem.title = @「test」,它將被忽略。模態導航欄是空白的。 – user230949 2010-04-11 19:34:47

+0

嗯,我寧願在' - (void)viewDidLoad'方法中創建'UIViewController'(實際上我做過一次:-) – 2010-04-11 21:22:06

3

推動一個具有相同導航狀態的模式視圖控制器似乎會打破由導航控制器建模的堆棧隱喻,這很奇怪,但我會假設你已經想過了。

如果你只想補充一點,從屏幕底部動畫的一個子視圖,你可以這樣說:

CGRect onScreenFrame = viewToAdd.frame; 
CGRect offScreenFrame = onScreenFrame; 
offScreenFrame.origin.y = self.view.bounds.size.height; 

viewToAdd.frame = offScreenFrame; 
[UIView beginAnimations:@"FakeModalTransition" context:nil]; 
[UIView setAnimationDuration:0.5f]; 
[self.view addSubview:viewToAdd]; 
viewToAdd.frame = onScreenFrame; 
[UIView commitAnimations];