2011-02-14 93 views
0

使用sdk 4.2,我在应用程序委托的我的 didFinishLaunchingWithOptions方法中的应用程序的tabBarController中添加了一个小按钮。这个想法是,当在屏幕上显示的任何视图控制器的顶部使其可见时显示。用户可以在视图之间切换,并且该按钮仍然可见。所述tabBarcontroller的将视图添加到TabBarcontroller

NSLog(@"tabBarController bounds: %@",NSStringFromCGRect(self.tabBarController.view.bounds)); 
self.Btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
self.Btn.frame = CGRectMake(80, 20, 160, 20); 
self.Btn.hidden = YES; 
[self.Btn addTarget:self action:@selector(launch:) forControlEvents:UIControlEventTouchUpInside]; 
[self.Btn setBackgroundImage:[UIImage imageNamed:@"launch.png"] forState:UIControlStateNormal]; 
[self.tabBarController.view addSubview:self.Btn]; 

范围,由NSLog的 打印出来{{0,0},{320,480}}

我使按钮CGRectMake(80,20,160,20的框架);所以我抵消了20下来允许状态栏 。这在大多数情况下都有效,当我使按钮可见时,它在可见视图控制器顶部的正确位置显示 。但有时候,按钮会向下移动,就好像tabBarcontroller的边界改变为0,0,320,460。所以按钮现在相对于新的界限,所以距离屏幕顶部多出20个像素。

一旦它移动,它会一直保持这样,直到我从任务切换器中终止应用并重启。 任何人都不知道什么会导致这种情况,以及如何解决。谢谢

回答

0

当您将按钮添加到标签栏控制器的视图时,将其自动调整掩码设置为UIViewAutoresizingFlexibleTopMargin。这将把它“锚定”到视图的底部,防止高度变化将其向下移动。

0

由于某些原因,标签栏控制器的视图范围发生变化。我不确切知道为什么发生这种情况,但在某些情况下,这是一种预期的行为,例如,当用户正在打电话并且屏幕显示通话状态栏时。

我会调整您的按钮的自动调整选项,因此即使标签栏控制器视图的边界发生更改,您的按钮仍保持不变。修复按钮的底部边距和内容高度,并具有灵活的顶部边距。

您可以在IB中执行此操作,或以编程方式设置autoresizingMask属性。

相关问题