我已按照以下教程将导航栏向下移动,因此 xcode 5/ios7 中的状态栏不会覆盖它:
但是现在在iOS7中,状态栏所在的顶部有一个空白区域,我希望导航栏也可以填充这个区域
例如,Facebook/twittter/Instagram iOS7 应用程序在状态栏后面也有导航栏背景。我如何实现这一目标?
对不起,如果我不清楚,但真的很想把这个排序
谢谢!
我已按照以下教程将导航栏向下移动,因此 xcode 5/ios7 中的状态栏不会覆盖它:
但是现在在iOS7中,状态栏所在的顶部有一个空白区域,我希望导航栏也可以填充这个区域
例如,Facebook/twittter/Instagram iOS7 应用程序在状态栏后面也有导航栏背景。我如何实现这一目标?
对不起,如果我不清楚,但真的很想把这个排序
谢谢!
您确实想设置barPosition
.UINavigationBar
您可以在代码中执行此操作:
让你的 ViewController 符合协议UINavigationBarDelegate
并实现 positionBar:metod。(您真正需要的协议是UIBarPositioningDelegate
但UINavigationBarDelegate
确实对其进行了扩展。)
@interface SampleViewController () <UINavigationBarDelegate>
@property (weak, nonatomic) IBOutlet UINavigationBar *navigationBar;
@end
@implementation SampleViewController
- (void)viewDidLoad {
[super viewDidLoad];
_navigationBar.delegate = self;
}
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
return UIBarPositionTopAttached;
}
@end
或在故事板中:
在 的 Identity Inspector 中UINavigationBar
,添加一个用户定义的运行时属性,其中 KeyPath = barPosition、Type = Number 和 Value = 3:
如果您想在 iOS 7 中使用 UIStatusBar 后面的自定义背景图像拉伸 UINavigationBar,请考虑以下事项:
在代码中(仅限 iPhone):
// Image needs 64 points height
NSString* navBarPortraitBackgroundPath = [[NSBundle mainBundle] pathForResource:@"navBarPortraitBackground" ofType:@"png"];
NSString* navBarLandscapeBackgroundPath;
if(UIScreen.mainScreen.bounds.size.height == 568){
// Image needs 64 points height
navBarLandscapeBackgroundPath = [[NSBundle mainBundle] pathForResource:@"navBarWideLandscapeBackground" ofType:@"png"];
} else {
// Image needs 64 points height
navBarLandscapeBackgroundPath = [[NSBundle mainBundle] pathForResource:@"navBarLandscapeBackground" ofType:@"png"];
}
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithContentsOfFile:navBarPortraitBackgroundPath] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithContentsOfFile:navBarLandscapeBackgroundPath] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsLandscapePhone];
如果您只想更改 UINavigationBar 的背景颜色,它将自动延伸到 UIStatusBar 后面。
在代码中:
[UINavigationBar appearance].barTintColor = [UIColor redColor];