自定义导航栏(navigationBar)
为了美观性,一般设置通用的navigationBar
创建基础控件
UIView *naviView; UIImageView *naviImageView; UILabel *naviLabel; UIButton *naviLeftBtn;
设置控件位置(Frame)
CGRect naviFrame = CGRectMake(0, 0, 320, 64); CGRect backBtnFrame = CGRectMake(10, 31, 30, 21); CGRect labelFrame = CGRectMake(0, 31, 320, 21);
将Frame应用到控件上
naviView = [[UIView alloc] initWithFrame:naviFrame]; naviImageView = [[UIImageView alloc] initWithFrame:naviFrame]; naviLabel = [[UILabel alloc] initWithFrame:labelFrame];
设置标题样式
naviLabel.backgroundColor = [UIColor clearColor]; naviLabel.text = title; // naviLabel.textColor = color; [naviLabel setTintColor:color]; naviLabel.textAlignment = NSTextAlignmentCenter;
将imageView和label添加到主View上
[naviView addSubview:naviImageView]; [naviView addSubview:naviLabel];
自定义左侧返回按钮
naviLeftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [naviLeftBtn setTintColor:color]; [naviLeftBtn setFrame:backBtnFrame]; [naviLeftBtn setImage:[UIImage imageNamed:@"navi_backBtn_normal.png"] forState:UIControlStateNormal]; [naviLeftBtn setImage:[UIImage imageNamed:@"navi_backBtn_selected.png"] forState:UIControlStateHighlighted]; [naviLeftBtn addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside]; [naviView addSubview:naviLeftBtn];
总代码
#pragma mark 设置导航条及左右按钮 -(UIView *)navigationBarWithTitle:(NSString *)title titleColor:(UIColor *)color isShowBackBtn:(BOOL)isShow rightBtn:(UIButton *)right { //x,y,w,h CGRect naviFrame = CGRectMake(0, 0, 320, 64); CGRect backBtnFrame = CGRectMake(10, 31, 30, 21); CGRect rightBtnFrame = CGRectMake(right.frame.origin.x, 27, right.frame.size.width, right.frame.size.height); CGRect labelFrame = CGRectMake(0, 31, 320, 21); // if(!iOS7) // { // naviFrame = CGRectMake(0, 0, 320, 44); // labelFrame = CGRectMake(0, 11, 320, 21); // backBtnFrame = CGRectMake(10, 11, 21, 21); // rightBtnFrame = CGRectMake(right.frame.origin.x, 11, right.frame.size.width, right.frame.size.height); // } // naviImageView.image = [UIImage imageNamed:naviImage_6]; naviView = [[UIView alloc] initWithFrame:naviFrame]; naviImageView = [[UIImageView alloc] initWithFrame:naviFrame]; naviImageView.backgroundColor = [UIColor blueColor]; naviLabel = [[UILabel alloc] initWithFrame:labelFrame]; naviLabel.backgroundColor = [UIColor clearColor]; naviLabel.text = title; // naviLabel.textColor = color; [naviLabel setTintColor:color]; naviLabel.textAlignment = NSTextAlignmentCenter; [naviView addSubview:naviImageView]; [naviView addSubview:naviLabel]; if(isShow) { naviLeftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [naviLeftBtn setTintColor:color]; [naviLeftBtn setFrame:backBtnFrame]; [naviLeftBtn setImage:[UIImage imageNamed:@"navi_backBtn_normal.png"] forState:UIControlStateNormal]; [naviLeftBtn setImage:[UIImage imageNamed:@"navi_backBtn_selected.png"] forState:UIControlStateHighlighted]; [naviLeftBtn addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside]; [naviView addSubview:naviLeftBtn]; } if(right) { [right setFrame:rightBtnFrame]; [naviView addSubview:right]; } [self.view addSubview:naviView]; return naviView; }