1

似乎 iOS 编程的一个特殊方面是诊断这些奇怪的、看似微不足道但令人沮丧、晦涩难懂的问题。

所以今天兴高采烈地忙着最近的iOS项目,决定把项目升级到最新版本的ECSlidingViewController,到底有什么坏处呢?只需更新一些已弃用的方法即可。

所以我做了所有这些。一切都很好,很漂亮。但是,我注意到状态栏的行为很奇怪!当我显示我的一个时它没有出现,underLeftViewController当我将 segue 那个特定推underLeftViewController入它的后续 VC 之一时,它处于一种奇怪的阴影中。什么??这怎么可能发生?反正一张图值一千字:

所以这里表现得很好很正常: 在此处输入图像描述

现在它消失了!!!: 在此处输入图像描述

现在它有一个奇怪的阴影!!!: 在此处输入图像描述

这是滑出滑动视图控制器的应用程序图片: 在此处输入图像描述

我一定是在某个地方对状态栏做了什么疯狂的事情,然后我想。

因此,我查看了状态栏表现得很疯狂的 VC 的实现文件。它实际上是 的子类,除了行之外UINavigationController它是空的。所以这里没有什么可疑的。viewDidLoad[super viewDidLoad]

run test页面实际上是rootViewControllernavVC 的,所以我查看了它。我把我所有的视图设置代码都放在了它的viewDidLoad里面,它看起来是这样的:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // remove advanced button
    self.navigationItem.rightBarButtonItem = nil;

    self.navigationController.view.layer.shadowOffset = CGSizeMake(1, 0);

    // setupGaugeView
    [self setupGauge];

    // add run test button
    [self setupRunTestButton];

    // setup notification container
    CGRect notificationContainerFrame;
    if ([WRGlobalHelper currentDeviceVersion] >= 7) {
        CGFloat statusBarHeight = [WRGlobalHelper statusBarHeight];
        notificationContainerFrame = CGRectMake(0, [[self.navigationController navigationBar] bounds].size.height+statusBarHeight, self.view.bounds.size.width, 1);
        for (UIView *subview in self.view.subviews) {
            CGRect newFrame = subview.frame;
            newFrame.origin.y += [WRGlobalHelper statusBarHeight];
            subview.frame = newFrame;
        }
    } else {
        notificationContainerFrame = CGRectMake(0, [[self.navigationController navigationBar] bounds].size.height, self.view.bounds.size.width, 1);
    }
    self.notificationContainerView = [[UIView alloc] initWithFrame:notificationContainerFrame];
    self.notificationContainerView.clipsToBounds = NO;
    self.notificationContainerView.layer.backgroundColor = [UIColor clearColor].CGColor;
    [self.view addSubview:self.notificationContainerView];

    // some other unrelated stuff omitted....
}

状态栏表现正常或奇怪但有阴影的 VC 的 `viewDidLoad' 也很简单,它们看起来像

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self.view addGestureRecognizer:self.slidingViewController.panGesture];
}

心烦意乱,我在这一点上放弃了。我已经在这个问题上花了将近 2 个小时,一想到状态栏消失,我的大脑就很痛。全能无所不知的SO,请帮助我!非常感谢!

4

1 回答 1

0

状态栏并没有消失,文本只是根据其分配的样式更改其颜色。
这个答案会有所帮助

于 2014-01-26T07:13:34.347 回答