2010-04-11 59 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];