在iOS中从纵向模式移植到横向模式时隐藏Tabbar

时间:2013-08-27 07:33:14

标签: iphone objective-c ios6 ipod-touch

我在移动到横向视图时遇到了隐藏UITabBar的问题。 当我在Xcode 4.6.1和iOS 6.1模拟器中运行我的应用程序时,一切正常,但在Xcode 5和iOS 7模拟器中运行应用程序时,我面临以下问题。

我正在使用tabBarController,屏幕底部有3个标签。 其中一个选项卡具有从纵向视图切换到横向视图的功能。 我们需要在纵向视图中显示tabBars,但需要在横向视图中隐藏它们。 将模拟器从纵向视图切换到横向视图时,tabBar会被隐藏,但我看到底部有一个空白区域。 确认空格是由Tabbar引起的,因为我将tabBar的隐藏属性更改为NO

(self.tabBarController.tabBar.hidden = No;)

我可以在横向视图中看到前面有空白区域的tabBars。

我正在分享shouldAutorotateToInterfaceOrientation的代码,我正在创建横向视图。 我试图使用[UIScreen mainScreen] .bounds.size.width而不是self.tabBarController.view.bounds.size.width。 我也试过hardCoding宽度值,但帧的宽度没有变化。

还有一件事要清楚,如果有人怀疑我们为什么要从超级视图中移除景观视图,将其设为零,然后再重新绘制它。 这是必需的,因为我们的应用程序显示工作日 - 周一,周二,周三和应用程序也支持更改为不同的语言。

因此,当用户选择其他语言时,我们需要以相应的语言显示这些工作日标签,因此我们必须删除该视图,然后再重新绘制,因为UILabes不会自动刷新。

我已阅读有关此问题的一些帖子,但无法找出实际原因。如果有人有任何想法,请建议解决方案。

首先,我在viewDidLoad()中创建一个横向视图,如下所示 -

_landscapeView = [[MyWeekView alloc]initWithFrame:CGRectMake(0, 0, self.tabBarController.view.bounds.size.height, 320)];
[self.view addSubview:_landscapeView];

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    displayEmpName.frame = CGRectMake(0, 22.0, self.tabBarController.view.bounds.size.width, 34.0);
    _portraitView.hidden = YES;
    _landscapeView.hidden = NO;
    self.tabBarController.tabBar.hidden = YES;
    self.navigationController.navigationBar.hidden = YES;
    [[self.tabBarController.view.subviews objectAtIndex:0]setFrame:CGRectMake(0, 0, 480,320)];
    dayView.hidden = YES;

    [self.view bringSubviewToFront:_landscapeView];
    self.navigationItem.leftBarButtonItem = nil;


    //LABELS IN SCREEN  DO NOT CHANGE ON CHANGING LANGUAGE
    //RELOAD THE LANDSCAPE VIEW ONCE DEVICE IS CHANGED TO LANDSCAPE MODE

    [_landscapeView removeFromSuperview];
    _landscapeView = nil;
    _landscapeView = [[MyWeekView alloc]initWithFrame:CGRectMake(0, 0,  self.tabBarController.view.bounds.size.width, 320)];
    [self.view addSubview:_landscapeView];
    }

0 个答案:

没有答案