サブクラス化された 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;
}
助けてくれてありがとう!