【问题标题】:iOS 7 Status Bar weird behavioriOS 7 状态栏奇怪的行为
【发布时间】:2014-04-24 11:47:23
【问题描述】:

我正在为 iPad 应用程序使用 UISplitViewController,但状态栏出现了奇怪的行为。

这是我初始化 RootViewController 的方式:

if(kIosVersionFloat >= 7.0)
        [application setStatusBarStyle:UIStatusBarStyleLightContent];
    [application setStatusBarHidden:NO];
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {

        _rootNavigationVC = [[YTRootNavigationController alloc] init];
        _rootNavigationVC.navigationBarHidden = YES;

        NSShadow *shadow = [[NSShadow alloc] init];
        shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
        shadow.shadowOffset = CGSizeMake(0, 1);
        [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                               [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                               shadow, NSShadowAttributeName,
                                                               [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];

        // RootViewController* firstVC = [[RootViewController alloc] init];

        detailViewController= [[iPadDetailViewController alloc]init];
        YTRootNavigationController *navC = [[YTRootNavigationController alloc]init];
        [navC pushViewController:detailViewController animated:NO];
        navC.navigationBarHidden = YES;
        _slidingVC = [[YTBaseViewController alloc] initWithViewClass:[YTSlidingContainerView class]];

        [_rootNavigationVC pushViewController:_slidingVC animated:NO];



        UISplitViewController* splitVC = [[UISplitViewController alloc] init];
        splitVC.viewControllers = [NSArray arrayWithObjects:_rootNavigationVC, navC, nil];

        _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        _window.rootViewController = splitVC;

}

这就是我的应用的样子:

我在 StackOverflow 上阅读了其他几篇关于同一问题的帖子,但没有得到太多结果。

有什么建议吗?

我没有使用 Storyboard 或 XIB

【问题讨论】:

    标签: ios objective-c ios7 uistatusbar ios7-statusbar


    【解决方案1】:

    假设您可以从 iPadDetailViewController 中的属性访问导航栏,您可以执行以下操作:

    首先,在您的iPadDetailViewController.h 中,实现UINavigationBarDelegate

    @interface iPadDetailViewController : UIViewController <UINavigationBarDelegate>
    

    然后,在iPadDetailViewController.m 中,在viewDidLoad 中设置self.navigationBar.delegate = self 并添加以下方法:

    - (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
        CGRect frame = self.navigationBar.frame;
        frame.origin = CGPointMake(0, [UIApplication sharedApplication].statusBarFrame.size.height);
        self.navigationBar.frame = frame;
    
        return UIBarPositionTopAttached;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2014-02-16
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      相关资源
      最近更新 更多