2011-04-08 86 views
0

所以我设法加载另一个视图时,有人按下按钮,但它加载到高。 `我不知道为什么会发生这种情况。差别正是顶级酒吧高。这是我的代码: 在委托我有:在状态栏中绘制的视图

- (void)flipToAbout { 
AboutViewController *aaboutView = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil]; 
[self setAboutController:aaboutView]; 
[aaboutView release]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES]; 
[homeController.view removeFromSuperview]; 
[self.window addSubview:[aboutController view]]; 
[UIView commitAnimations];} 

在有关视图我没有改变anything.Please告诉我什么是problemm .Thanks。

回答

1

问题是,您将视图直接添加到窗口而没有考虑导航栏。通常,如果您有导航栏,则使用导航控制器来管理视图控制器。将视图控制器放到导航控制器的堆栈上会导致导航控制器将该视图控制器的视图添加到窗口中,并且您不必担心导航栏。但是,由于您正在手动完成此操作,因此您需要在将视图添加到窗口后重新定位视图。

请注意,此问题与笔尖没有任何关系,只不过您从笔尖加载视图。如果您以编程方式创建视图,则会发生同样的情况。

+1

试图在视图中执行此操作: - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:CGRectMake(0,20,320,460)]; if(self){//初始化代码。 } return self; }但它什么都不做。 – flaviusilaghi 2011-04-08 17:16:10

+0

这可能是因为你正在从一个笔尖加载视图,所以使用-initWithCoder:而不是-initWithFrame:来完成初始化。相反,加载'aboutView.view.frame = CGRectMake(0,20,320,460);'加载视图后,或者在将其添加到窗口后。 – Caleb 2011-04-08 18:03:25