我按照下面的教程向下移动我的导航栏,以便它不是在Xcode 5/ios7覆盖的状态栏:让后面的状态栏导航栏伸展在Xcode 5/iOS7
Status bar and navigation bar issue in IOS7
但是现在在iOS7的顶部会有一个空白的状态栏,我希望导航栏也可以填充这个区域
例如,Facebook/twittter/Instagram iOS7应用程序具有导航栏背景也在状态栏后面。我如何实现这一目标?
很抱歉,如果我不是清楚,但真正渴望得到这个整理
谢谢!
我按照下面的教程向下移动我的导航栏,以便它不是在Xcode 5/ios7覆盖的状态栏:让后面的状态栏导航栏伸展在Xcode 5/iOS7
Status bar and navigation bar issue in IOS7
但是现在在iOS7的顶部会有一个空白的状态栏,我希望导航栏也可以填充这个区域
例如,Facebook/twittter/Instagram iOS7应用程序具有导航栏背景也在状态栏后面。我如何实现这一目标?
很抱歉,如果我不是清楚,但真正渴望得到这个整理
谢谢!
如果想舒展与UIStatusBar iOS中后面的自定义背景图像的UINavigationBar的7考虑以下因素:
在代码(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];
你要设置的UINavigationBar
的barPosition
。
您可以在代码中做到这一点:
让你的ViewController符合协议UINavigationBarDelegate
和实施positionBar:梅托德。 (你确实需要的协议是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
或情节提要:
在UINavigationBar
身份检查,添加一个用户自定义运行属性与的keyPath = barPosition ,类型=数字,和值= 3:
非常感谢您向我学习用户定义的运行时属性菜单。这是我对地球的震撼。我永远不会继承ui元素来再次更改一个属性。 – lol
有趣的发现在这里,但它不适合我。我总是得到以下错误:“***由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:'无法手动设置在由控制器管理的UINavigationBar上的委托'。”如果我重写UINavigationViewController并将其添加到那里,没有得到一个错误,但它也不工作... –
@lol我只是希望你是讽刺,OO这不是你应该养成的习惯。它可以很快成为调试的噩梦。 – TheCodingArt
您是否使用自定义导航栏或内置? –