旋转设备时是否有人成功隐藏了UITabbar?
我在UItabbar控制器中有一个视图,我旋转(因此有效地旋转一个选项卡)
当发生这种情况时,我希望标签栏消失......但似乎没有任何效果!
标签栏仍然可见
或者它随着视图一起消失
或者标签栏消失,视图不再旋转!
因此,如果有人成功完成了这项任务,我们将非常感谢任何建议!
由于
汤姆
答案 0 :(得分:2)
对不起,迟到的回复pk
我设法旋转并隐藏了标签栏。
首先是一个子类化UITabBarController的情况,包括这个方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
//This allows us to get the rotation calls from any view in the tab bar
//
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation];
}
然后您只能从所需的视图控制器旋转。
隐藏标签栏:
获取对app delegate和Tab栏控制器的引用,然后将标签栏设置为隐藏:
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
UIView *tabBar = [delegate.tabBarController.view.subviews objectAtIndex:1];
tabBar.hidden = TRUE;
希望这有帮助!
答案 1 :(得分:1)
您是否尝试在视图控制器中的UIDeviceOrientationDidChangeNotification通知上添加观察者,并在此回调中执行“隐藏=真或假”?
我使用MonoTouch框架使用以下C#代码成功完成了这项工作。
void Initialize ()
{
NSNotificationCenter.DefaultCenter.AddObserver("UIDeviceOrientationDidChangeNotification", DeviceRotated);
}
private void DeviceRotated(NSNotification notification)
{
if ( notification.Name.Equals("UIDeviceOrientationDidChangeNotification") )
{
Console.WriteLine(UIDevice.CurrentDevice.Orientation.ToString());
if ( UIDevice.CurrentDevice.Orientation != UIDeviceOrientation.Portrait )
{
tabBar.Hidden = true;
//Plus some additional logic.
}
else
{
tabBar.Hidden = false;
}
}
}
答案 2 :(得分:-1)
你真的可以隐藏UItabbarController中的标签栏吗?至少笔尖不允许您从底栏下拉列表中选择任何一个。