self.navigationController.navigationBar.translucent = 否;在 navigationBar 之后创建一个额外的间隙
self.navigationController.navigationBar.translucent = NO; create an extra gap after navigationBar
先说明一下我的情况。我在我的 appDelegate
中设置了 UINavigationBar
颜色 Like:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:255.0f/255.0f green:87.0f/255.0f blue:10.0f/255.0f alpha:1]];
现在在我的一些viewController
中UINavigationBar
的translucent
设置为YES
。
self.navigationController.navigationBar.translucent = YES;
这就是为什么我的 UINavigationBar
有阴影。它没有显示确切的颜色。作为解决方案,我将 translucent
从 YES
设置为 NO
。它现在显示的是准确的颜色,但我面临的是我的某些视图完全从我的界面中消失了。在这里,让我告诉你一件事,这里的很多视图都是通过编程方式定位的,所以恐怕我不能将我的每个 viewController
视图都移动到 64 像素高。只是想知道是否有任何解决方案来解决这个问题。我尝试使用 opaque
,但没有成功。如果有人了解我的问题,请分享解决方案(如果有)。非常感谢。
从 iOS7 开始,如果您使用半透明条(在 UINavigationController
或 UITabbarController
中),托管视图控制器具有在其下扩展的默认行为。如果您说将条形图设置为半透明,它的颜色将是它下方的视图和蝙蝠颜色的组合。这是正常的,唯一的方法是将半透明设置为无或将背景图像应用于导航栏。
手动应用框架在自动布局下会导致意想不到的结果,您必须使用约束。
[更新]
要从纯色创建背景图像,您可以使用该方法,图像为 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;
}
如果您看到额外的间隙可能是因为您也将 automaticallyAdjustScrollViewInset 设置为 YES,请尝试将其设置为 NO。如果它继承自 UIScrollView
,此 属性 添加和额外插入到您的视图或 vfirst 视图子视图中
它晚了,但我遇到了同样的问题,我通过在情节提要中的 Viewcontroller 上制作 UINavigationbar none 解决了这个问题,并将视图的大小从 0,0
开始
先说明一下我的情况。我在我的 appDelegate
中设置了 UINavigationBar
颜色 Like:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:255.0f/255.0f green:87.0f/255.0f blue:10.0f/255.0f alpha:1]];
现在在我的一些viewController
中UINavigationBar
的translucent
设置为YES
。
self.navigationController.navigationBar.translucent = YES;
这就是为什么我的 UINavigationBar
有阴影。它没有显示确切的颜色。作为解决方案,我将 translucent
从 YES
设置为 NO
。它现在显示的是准确的颜色,但我面临的是我的某些视图完全从我的界面中消失了。在这里,让我告诉你一件事,这里的很多视图都是通过编程方式定位的,所以恐怕我不能将我的每个 viewController
视图都移动到 64 像素高。只是想知道是否有任何解决方案来解决这个问题。我尝试使用 opaque
,但没有成功。如果有人了解我的问题,请分享解决方案(如果有)。非常感谢。
从 iOS7 开始,如果您使用半透明条(在 UINavigationController
或 UITabbarController
中),托管视图控制器具有在其下扩展的默认行为。如果您说将条形图设置为半透明,它的颜色将是它下方的视图和蝙蝠颜色的组合。这是正常的,唯一的方法是将半透明设置为无或将背景图像应用于导航栏。
手动应用框架在自动布局下会导致意想不到的结果,您必须使用约束。
[更新]
要从纯色创建背景图像,您可以使用该方法,图像为 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;
}
如果您看到额外的间隙可能是因为您也将 automaticallyAdjustScrollViewInset 设置为 YES,请尝试将其设置为 NO。如果它继承自 UIScrollView
它晚了,但我遇到了同样的问题,我通过在情节提要中的 Viewcontroller 上制作 UINavigationbar none 解决了这个问题,并将视图的大小从 0,0
开始