1

drawRectメソッドをオーバーライドせずにこれを行うことはできますか?

私は次のことを試しました:

UIImage *navBarImage = [[UIImage imageNamed:@"image_navbg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
[self.descriptionBar setBackgroundColor:[UIColor colorWithPatternImage:navBarImage]];
[self.bottomBar setBackgroundColor:[UIColor colorWithPatternImage:navBarImage]];

image_navbg.png は無地のつや消し黒の正方形です。私が得た結果にはまだ黒 - 灰色のグラデーションがあります。

また、これらを設定しても役に立ちませんでした:

[self.descriptionBar setTranslucent:YES];
[self.bottomBar setTranslucent:YES];
4

3 に答える 3

3

ナビゲーションコントローラーに組み込まれているツールバーで同じことをしたかったのです。次を使用してそれを明らかにします。

[self.navigationController setToolbarHidden:NO];

この種のツールバー (少なくとも iOS 4 以前)のグラデーションを削除するために、次の手法を使用して成功しました。まず、これを appDelegate ヘッダーに追加しました。

@interface MyToolbar : UIToolbar {}

- (void)drawRect:(CGRect)rect;

@end

次に、これを appDelegate .m ファイルに追加しました

@implementation MyToolbar

- (void)drawRect:(CGRect)rect {
    UIColor *colorTabBlack = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColor(context, CGColorGetComponents( [colorTabBlack CGColor]));
    CGContextFillRect(context, rect);
}
@end

次に、IB で (現在表示されている) ツールバーのクラスを "MyToolbar" に切り替えました。これを理解するのに永遠にかかったので、投稿しています。それが他の誰かに役立つことを願っています!

于 2012-10-25T04:07:16.457 に答える
2

iOS 5 をターゲットにしている場合は、これにUIAppearanceを使用してください — もうオーバーライドし-drawRect:ないでください。

于 2012-07-24T09:01:46.347 に答える