小知识:
1.UIBarButtonItem:描述按钮具体的内容
2.UINavigationItem:设置导航条上的内容(左边,右边,中间)
3.tabBarItem:设置tabBar上的按钮内容(tabBarButton)
左右item
问题:
- UIButton包装成UIBarButtonItem就会导致点击区域扩大
点击区域扩大
应该包装成UIVIew在进行添加包装成UIVIew
效果图
扩展类UIBarButtonItem-代码如下
UIBarButtonItem+XCExtension.h#import <UIKit/UIKit.h> @interface UIBarButtonItem (XCExtension) + (instancetype)itemWithNorImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action; @end
UIBarButtonItem+XCExtension.m
#import "UIBarButtonItem+XCExtension.h" @implementation UIBarButtonItem (XCExtension) + (instancetype)itemWithNorImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal]; [btn setImage:[UIImage imageNamed:highImage] forSt ate:UIControlStateHighlighted]; [btn sizeToFit]; [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; UIView *containVew = [[UIView alloc] initWithFrame:btn.bounds]; [containVew addSubview:btn]; return [[UIBarButtonItem alloc]initWithCustomView:containVew]; }
使用方法:(例如)
self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithNorImage:@"nav_item_game_icon" highImage:@"nav_item_game_click_icon" target:self action:@selector(game)];
设置导航条标题
- 只要通过模型设置,都需要通过富文本设置
- 设置导航条标题
self.navigationItem.title = @"我的"; NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20]; [self.navigationController.navigationBar setTitleTextAttributes:attrs];
- titleVIew
self.navigationItem.titleView = [[UIImageView alloc]initWithImage: [UIImage imageNamed:@"MainTitle"]];
片段代码:(调用)
- (void)setupNavBar { // 左边Item self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithNorImage:@"nav_item_game_icon" highImage:@"nav_item_game_click_icon" target:self action:@selector(game)]; // 右边Item self.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithNorImage:@"navigationButtonRandom" highImage:@"navigationButtonRandomClick" target:self action:nil]; // 中间titleView self.navigationItem.titleView = [[UIImageView alloc]initWithImage: [UIImage imageNamed:@"MainTitle"]]; }
- (void)setupNavBar{ // 设置 UIBarButtonItem *settingItem = [UIBarButtonItem itemWithNorImage:@"mine-setting-icon" highImage:@"mine-setting-icon-click" target:self action:@selector(setting:)]; // 夜间模式 UIBarButtonItem *nightItem = [UIBarButtonItem itemWithNorImage:@"mine-moon-icon" selImage:@"mine-moon-icon-click" target:self action:@selector(night:)]; // 设置 self.navigationItem.rightBarButtonItems = @[settingItem,nightItem]; // 只要通过模型设置,都需要通过富文本设置 // 设置导航条标题 ==> UINavigationBar NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20]; [self.navigationController.navigationBar setTitleTextAttributes:attrs]; } #pragma mark- 夜间模式以及设置点击事件 - (void)night:(UIButton *)btn{ // 选中状态-必须手动 btn.selected = !btn.selected; } - (void)setting:(UIButton *)btn{ }