self.navigationController.navigationBar.translucent = NO;在navigationBar之后创建一个额外的差距

时间:2015-03-02 07:28:43

标签: ios objective-c uinavigationcontroller uinavigationbar

让我先解释一下我的情况。我在UINavigationBar喜欢

中设置了appDelegate颜色
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:255.0f/255.0f green:87.0f/255.0f blue:10.0f/255.0f alpha:1]];

现在我的viewController translucent UINavigationBar设置为YES

self.navigationController.navigationBar.translucent = YES;

这就是为什么我UINavigationBar上有阴影的原因。它没有显示确切的颜色。作为解决方案,我将translucentYES设置为NO。它现在显示的确切颜色,但我面对的是我的一些视图完全脱离了我的界面。在这里,让我告诉你一件事,这里的很多观点都是通过编程方式定位的,所以我恐怕我不能只将每个viewController视图移动64像素高。只是想知道有没有解决方案的解决方案。我尝试opaque,但没有运气。如果有人理解我的问题,请分享解决方案。非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您使用半透明栏(在UINavigationControllerUITabbarController中),则从iOS7开始,托管视图控制器具有在其下扩展的默认行为。如果你说把它设置为半透明的颜色它将是它下面的视图和蝙蝠颜色的组合。这是正常的,唯一的方法是将半透明度设置为no或将背景图像应用于导航栏 手动应用框架会在自动布局下导致意外结果,您必须使用约束。

[UPDATE]

要从纯色创建背景图像,您可以使用该方法,图像为1px正方形,但没有问题,因为它可以拉伸或平铺以覆盖整个区域:

+ (UIImage *) imageWithColor:(UIColor*) color {
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, color.CGColor);
    CGContextFillRect(context, rect);
    UIImage *colorImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return colorImage;
}

如果你看到并且额外的差距可能是因为你还将automaticAdjustScrollViewInset设置为YES,请尝试将其设置为NO。如果属性继承自UIScrollView

,则此属性会为您的视图或您的第一个视图子视图添加和额外插入

答案 1 :(得分:0)

它已经很晚了,但是我面临同样的问题,我通过在故事板中的Viewcontroller上使UINavigationbar为none来解决它,并将视图的大小调整为从0,0开始