0

私は UIToolBar をサブクラス化していますdrawRect。UIToolBar のメソッドをオーバーライドする方法は次のとおりです。

- (void)drawRect:(CGRect)rect
{
    UIImage *backgroundImage = [UIImage imageNamed:@"UIToolBar_Background.png"];
    [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

アプリは、メソッドで初期化された UINavigationController パラダイムを使用しますinitWithNavigationBarClass

問題は、ツールバーの下半分が黒いことですか? UIToolBar_Background.png の高さは 44 ピクセル (網膜の場合は 88) です。下半分が黒くなってはいけません。

4

1 に答える 1

0

UIToolBar をサブクラス化し、drawRect をオーバーライドすることで、UIToolBar 独自の描画の一部を削除します。外観 API を使用して背景画像を設定しない理由:

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"UIToolBar_Background.png"]
                        forToolbarPosition:UIToolbarPositionBottom
                                barMetrics:UIBarMetricsDefault];

または、サブクラス化ルートを使用することもできます。独自の描画を行う前に、必ず [super drawrect:rect] を呼び出してください。

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    UIImage *backgroundImage = [UIImage imageNamed:@"UIToolBar_Background.png"];
    [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
于 2013-04-25T13:28:51.073 に答える