使用sdk 4.2,我在我的应用程序中的tabBarController中添加了一个小按钮 应用委托的didFinishLaunchingWithOptions方法。这个想法是,当显示在屏幕上显示的任何视图控制器的顶部时,它显示为可见。用户可以在视图之间切换,此按钮仍然可见。
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打印出来的tabBarcontroller的界限 {{0,0},{320,480}}
我制作按钮CGRectMake的框架(80,20,160,20);所以我把它抵消了20以允许 对于状态栏。这大部分时间都可以工作,当我显示按钮可见时 在可见viewcontroller顶部的正确位置。但有时按钮会向下移动,就像tabBarcontroller的边界变为0,0,320,460一样。因此按钮现在相对于新边界,因此从屏幕顶部向下20个像素。
一旦移动它就会一直保持这样直到我从任务切换器中杀死应用程序并重新启动。 任何人都知道是什么会导致这个以及如何解决。感谢
答案 0 :(得分:0)
将按钮添加到标签栏控制器的视图时,将其自动调整遮罩设置为UIViewAutoresizingFlexibleTopMargin
。这将“锚定”到视图的底部,防止高度变化将其向下移动。
答案 1 :(得分:0)
由于某些原因,标签栏控制器视图的边界发生了变化。我不确切知道为什么会发生这种情况,但在某些情况下这是预期的行为,例如当用户打电话并且屏幕显示通话状态栏时。
我会调整按钮的自动调整大小选项,因此即使标签栏控制器视图的边界发生变化,按钮仍保持不变。修复按钮的下边距和内容高度,并具有灵活的上边距。
您可以在IB中执行此操作,或以编程方式设置autoresizingMask属性。