navigation+tab bar
-(void)drawRect:(CGRect)rect
{
UIImage *image=[UIImage imageNamed:@"背景.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
这个方法真是太棒了。
实现一次,程序中所有的navigationbar的背景都能得到重绘。而且不会覆盖掉自绘的按钮。
关于自绘navigationitem的left+right按钮。
UIButton *buttonback=[[UIButton alloc]initWithFrame:CGRectMake(10,0,64,32)];
[buttonback setBackgroundImage:[UIImage imageNamed:@"按钮.png"] forState:UIControlStateNormal];
[buttonback addTarget:self action:@selector(button) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *backItem=[[UIBarButtonItem alloc]initWithCustomView:buttonback];
self.navigationItem.rightBarButtonItem = backItem;
[buttonback release];
以上是右按钮,左按钮则有区别。
左按钮分leftBarButtonItem和backBarButtonItem
backBarButtonItem的出栈是自动的,但是无法自绘。
自绘只能选择leftBarButtonItem,但是没有关联动作。
出栈动作要自己手动关联,
[self.navigationController popViewControllerAnimate
至此,navigationbar和navigationitem的背景设置就解决了。
总结一下navigation系列的关系。
navigationController 控制:
rootviewcontroller+一系列viewcontroller
navigationbar ,控制navigationitem
toolbar
navigationitem与viewcontroller一一对应。