Iphone ios7 UINavigationBar在一段时间后停止在状态栏下扩展

Iphone ios7 UINavigationBar在一段时间后停止在状态栏下扩展,iphone,ios7,uinavigationcontroller,uinavigationbar,statusbar,Iphone,Ios7,Uinavigationcontroller,Uinavigationbar,Statusbar,首先,这不是一个关于导航栏与状态栏重叠的问题(和其他许多问题一样)。 UINavigationBar(我的导航控制器的)完全符合我的要求 问题在于我的导航栏自定义背景。 背景图像(或导航栏本身)在状态栏下随机停止扩展(在我的应用程序启动后几秒钟后,或者当我在上面显示/关闭模式导航控制器时)。 我的自定义映像具有适用于iOS(640x128px)的适当尺寸 1。初始外观(需要-自定义640x128px背景在状态栏下扩展得很好): 2。一段时间后(自身闪烁): 是什么导致UINavigation

首先,这不是一个关于导航栏与状态栏重叠的问题(和其他许多问题一样)。 UINavigationBar(我的导航控制器的)完全符合我的要求

问题在于我的导航栏自定义背景。
背景图像(或导航栏本身)在状态栏下随机停止扩展(在我的应用程序启动后几秒钟后,或者当我在上面显示/关闭模式导航控制器时)。 我的自定义映像具有适用于iOS(640x128px)的适当尺寸

1。初始外观(需要-自定义640x128px背景在状态栏下扩展得很好):

2。一段时间后(自身闪烁):

是什么导致UINavigationBar背景图像出现这种随机闪烁

我使用以下代码来配置我的背景:

    // Load resources for iOS 7 or later
    [[CustomNavigationBar appearance] setBackgroundImage:[self imageNamed:@"bg_top_ios7.png"] forBarMetrics:UIBarMetricsDefault];
    [[CustomNavigationBar appearance] setBackgroundImage:[self imageNamed:@"bg_top_ios7.png"] forBarMetrics:UIBarMetricsDefaultPrompt];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
Info.plist文件中的我的状态栏设置:

我的UIViewController子类init方法中也有以下设置(不确定是否重要):

我的视图控制器嵌入在UINavigationController中(负责UINavigatioBbar定位)。
我还使用ECSlidingViewController(显示容器)作为导航控制器的容器,但我不确定这是否重要

原来我正在更改导航控制器导航栏(应用程序中的某个地方)的
clipsToBounds=YES

navigationController.navigationBar.clipsToBounds=YES

为了让
UINavigationBar
在状态栏下扩展其背景 其clipsToBounds必须设置为NO(默认设置)。 一定不要拿它开玩笑

解决方案简单如下:

navigationController.navigationBar.clipstobunds=NO

-(id)init{
//DLog(@"BaseViewController init...");
    if (self = [super init]) {

        popToRoot = modal = NO;
        rootIndex = 0;
        indexInBottomNavigation = 0;
        [Crashlytics setObjectValue:@"init" forKey:NSStringFromClass([self class])];


        // iOS 7 adoptions:
        if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
            self.edgesForExtendedLayout = UIRectEdgeNone;

        if ([self respondsToSelector:@selector(extendedLayoutIncludesOpaqueBars)])
            self.extendedLayoutIncludesOpaqueBars = YES;

        if ([self respondsToSelector:@selector(automaticallyAdjustsScrollViewInsets)])
            self.automaticallyAdjustsScrollViewInsets = NO;


    }
    return self;
}