一. 思路
- 给ViewController创建一个分类,里面放导航栏view的创建方法
- 如果需要使用button,button的点击使用block来解决
二. 代码
1. 首先需要一个可以使用block处理点击事件的button,参考这里
2. 然后给ViewController创建一个分类,并在里面实现代码
- (UIView *)createNavigationItemTitleViewWithTitle:(NSString *)title{
UILabel *label = [[UILabel alloc] init];
label.text = title;
label.font = ISFont_17;
label.textColor = [UIColor whiteColor];
CGSize labelSize = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:17], NSFontAttributeName, nil]];
label.frame = CGRectMake(0, 0, labelSize.width, labelSize.height);
return label;
}
- (UIBarButtonItem *)createLeftBarButtonItemWithImage:(UIImage *)leftBarImage touch:(void(^)(UIButton *button))touchBlock{
BlockButton * leftButton = [BlockButton buttonWithType:UIButtonTypeCustom];
leftButton.frame = CGRectMake(0, 0, 20, 20);
[leftButton setImage:leftBarImage forState:UIControlStateNormal];
[leftButton addTapBlock:^(UIButton *button) {
touchBlock(button);
}];
return [[UIBarButtonItem alloc] initWithCustomView:leftButton];
}
3. 在需要的位置调用即可
//设置vc标题
self.navigationItem.titleView = [self createNavigationItemTitleViewWithTitle:self.labelInfo.szLabelName];
//设置返回按钮
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
__weak typeof(self) weakSelf = self;
self.navigationItem.leftBarButtonItem = [self createLeftBarButtonItemWithImage:[UIImage imageNamed:@"backbutton"] touch:^(UIButton *button) {
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf.navigationController popViewControllerAnimated:YES];
});
}];