7

次のチュートリアルに従ってナビゲーション バーを下に移動し、xcode 5/ios7 のステータス バーでカバーされないようにしました。

IOS7 のステータス バーとナビゲーション バーの問題

しかし、現在iOS7では、ステータスバーが配置される上部に空白のスペースがあり、ナビゲーションバーもこの領域を埋める必要があります

たとえば、Facebook/twitter/Instagram iOS7 アプリでは、ステータス バーの背後にもナビゲーション バーの背景があります。どうすればこれを達成できますか?

私がはっきりしていない場合は申し訳ありませんが、これを整理したいと思っています

ありがとうございました!

4

2 に答える 2

25

の を設定しbarPositionますUINavigationBar

コードでこれを行うことができます:

ViewController をプロトコルに準拠させ、UINavigationBarDelegatepositionBar: メソッドを実装します。(あなたが本当に必要とするプロトコルはそれを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 の User Defined runtime Attribute を追加します。

ユーザー定義のランタイム属性を追加

于 2015-02-05T14:50:54.970 に答える
0

iOS 7 で UIStatusBar の背後にあるカスタム背景画像を使用して UINavigationBar を拡大する場合は、次のことを考慮してください。

  1. UIStatusBar はそのまま透明です。
  2. UINavigationBarのbarPositionプロパティを UIBarPositionTopAttached に設定します
  3. iOS 7 の UINavigationBar 背景画像 (UIBarPositionTopAttached の場合) は、iOS 7 より前のものとは異なる寸法を持っているため、それらを使用する必要があります: 現在、高さは 64 ポイントです

コード内 ( 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];
于 2013-09-28T11:12:08.030 に答える