2012-04-12 4 views
0

私はdrawRectをオーバーライドして、透明度をバックグラウンドとしてpngを提供するサブクラス化されたUINavigationBarを持っています。すべてのものが期待どおりに動作し、バーの上部に1ピクセルのスペースを確保します(スペース内を移動する基になるマップを見ることができます)。カスタムUINavigationBarは、先頭に1ピクセルオフセットされています。

screen shot

私は見つけることができた唯一の事は私の問題のように聞こえるが、私は説明を作るかわからない、この質問です:私は、PNGファイルがないことを確認したEmpty space of 1 pixel above UINavigationBar

画像の上部に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; 

}

ありがとう!

+0

あなたが24/32ビットのPNG画像または8ビット1を使用しましたか? –

+0

こんにちは、彼は応答のおかげで。私はダブル検証し、それは32ビットです。何か案は? – Matt

答えて

0

drawRect:をオーバーライドする代わりにUIAppearanceプロキシを使用してカスタム背景画像を設定していましたが、カスタムナビゲーションバーで同じ問題が発生しました。これは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; 
関連する問題