0

サブクラス化された UINavigationBar があり、drawRect をオーバーライドして、背景として透過性のある png を提供しています。バーの上部にある 1 ピクセルのスペースを除いて、すべてが期待どおりに機能します (下にあるマップがスペース内を移動しているのがわかります)。

スクリーンショット

私が見つけることができたのは、私の問題のように聞こえるこの質問だけですが、説明をどうすればよいかわかりません: UINavigationBarの上の1ピクセルの空きスペース

PNG ファイルの画像の上部に 1 ピクセルの透明度がないことを確認しました。
サブクラス化された UINavigationBar でのオーバーライド:

- (void)drawRect:(CGRect)rect { 

[_bg drawInRect:CGRectMake(0, 0, _bg.size.width, _bg.size.height)];
// showing correct bounds - drawRect: 0.000000, 0.000000, 320.000000, 85.000000
NSLog(@"drawRect: %f, %f, %f, %f",  rect.origin.x, 
                                    rect.origin.y, 
                                    rect.size.width, 
                                    rect.size.height);

}

- (CGSize)sizeThatFits:(CGSize)size {
CGRect frame = [[UIScreen mainScreen] applicationFrame];
CGSize sz = CGSizeMake(frame.size.width, _bg.size.height);
NSLog(@"sizefits");
return sz;

}

助けてくれてありがとう!

4

1 に答える 1

0

drawRect:. これは、ルート ビュー コントローラーの viewWillAppear: での私の簡単な修正でした。

// Make sure nav bar is flush with status bar (iOS 5 iPhone portrait somehow gives status bar height 20 and nav bar y 20.5, so we miss a pixel).
CGRect navBarFrame = self.navigationController.navigationBar.frame;
navBarFrame.origin.y = [UIApplication sharedApplication].statusBarFrame.size.height;
self.navigationController.navigationBar.frame = navBarFrame;
于 2012-04-24T14:17:05.980 に答える