改变导航条样式

  哥怒了,这blog可视化编辑器插入代码老是显示html元素,搞了半个多小时,无力地抛弃之...

1.背景色:

(http://stackoverflow.com/questions/2259929/iphone-navigationbar-custom-background)网上说用category给UINavigationBar重写drawRect:

@implementation UINavigationBar (CustomImage)

- (void)drawRect:(CGRect)rect {

    UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];

    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

}

@end

可以用,他自己也说其实不是很好,我觉得不是很灵活


忘了在哪看到了,说是tintColor,经过测试确实如此,setBackgroundColor不行,tintColor就可以:

UINavigationBar *bar = self.navigationController.navigationBar;

bar.tintColor=[UIColor redColor];


而且连left/right button一起改了(前提是item用tittle初始化):

UIBarButtonItem *item=[[UIBarButtonItem alloc] initWithTitle:@"ad1.png" style:UIBarButtonItemStyleBordered target:nil action:nil];

self.navigationItem.rightBarButtonItem=item;

效果:

注意:用Image初始化的item加上去有点问题,会覆盖大部分bar,不解:

UIBarButtonItem *item=[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"ad1.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];

item.width=50;

self.navigationItem.rightBarButtonItem=item;

效果:

 


另,item用customview初始化的话,如用button,需要设置frame,不然不显示:

UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

btn.frame=CGRectMake(0, 0, 50, 30);

[btn setBackgroundImage:[UIImage imageNamed:@"ad1.png"] forState:UIControlStateNormal];

UIBarButtonItem *item=[[UIBarButtonItem alloc] initWithCustomView:btn];

self.navigationItem.rightBarButtonItem=item;

效果:

 


2.不止改背景颜色的话,就得用imageView,貌似以前看过,反正就是insert到bar的subviews的0,要不add之后exchange一下,bar原先只有一个subview:

UIImageView *imageView=[[UIImageView alloc] initWithFrame:bar.bounds];

imageView.image=[UIImage imageNamed:@"adBg.png"];

[bar insertSubview:imageView atIndex:0];

[imageView release];

效果:

 


注意:只add的话会把tittle覆盖掉,故需exchange:

[bar addSubview:imageView];

[bar exchangeSubviewAtIndex:0 withSubviewAtIndex:1];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值