171 lines
5.1 KiB
Mathematica
171 lines
5.1 KiB
Mathematica
|
|
//
|
|||
|
|
// KBAIMessageVC.m
|
|||
|
|
// keyBoard
|
|||
|
|
//
|
|||
|
|
// Created by Mac on 2026/1/28.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#import "KBAIMessageVC.h"
|
|||
|
|
#import <JXCategoryView/JXCategoryView.h>
|
|||
|
|
#import "KBAIMessageZanVC.h"
|
|||
|
|
#import "KBAIMessageChatingVC.h"
|
|||
|
|
#import <Masonry/Masonry.h>
|
|||
|
|
|
|||
|
|
@interface KBAIMessageVC () <JXCategoryViewDelegate, JXCategoryListContainerViewDelegate>
|
|||
|
|
|
|||
|
|
/// 分类标签视图
|
|||
|
|
@property (nonatomic, strong) JXCategoryTitleView *categoryView;
|
|||
|
|
|
|||
|
|
/// 列表容器
|
|||
|
|
@property (nonatomic, strong) JXCategoryListContainerView *listContainerView;
|
|||
|
|
|
|||
|
|
/// 右侧搜索按钮
|
|||
|
|
@property (nonatomic, strong) UIButton *searchButton;
|
|||
|
|
|
|||
|
|
/// 标题数组
|
|||
|
|
@property (nonatomic, strong) NSArray<NSString *> *titles;
|
|||
|
|
|
|||
|
|
@end
|
|||
|
|
|
|||
|
|
@implementation KBAIMessageVC
|
|||
|
|
|
|||
|
|
#pragma mark - Lifecycle
|
|||
|
|
|
|||
|
|
- (void)viewDidLoad {
|
|||
|
|
[super viewDidLoad];
|
|||
|
|
self.view.backgroundColor = [UIColor whiteColor];
|
|||
|
|
|
|||
|
|
/// 1:控件初始化
|
|||
|
|
[self setupUI];
|
|||
|
|
|
|||
|
|
/// 2:绑定事件
|
|||
|
|
[self bindActions];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#pragma mark - 1:控件初始化
|
|||
|
|
|
|||
|
|
- (void)setupUI {
|
|||
|
|
// 隐藏默认导航栏标题
|
|||
|
|
self.kb_titleLabel.hidden = YES;
|
|||
|
|
|
|||
|
|
// 添加分类视图到导航栏位置
|
|||
|
|
[self.kb_navView addSubview:self.categoryView];
|
|||
|
|
[self.categoryView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|||
|
|
make.left.equalTo(self.kb_backButton.mas_right).offset(0);
|
|||
|
|
make.centerY.equalTo(self.kb_backButton);
|
|||
|
|
make.height.mas_equalTo(44);
|
|||
|
|
make.width.mas_equalTo(180);
|
|||
|
|
}];
|
|||
|
|
|
|||
|
|
// 添加搜索按钮
|
|||
|
|
[self.kb_navView addSubview:self.searchButton];
|
|||
|
|
[self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|||
|
|
make.right.equalTo(self.kb_navView).offset(-16);
|
|||
|
|
make.centerY.equalTo(self.kb_backButton);
|
|||
|
|
make.width.height.mas_equalTo(24);
|
|||
|
|
}];
|
|||
|
|
|
|||
|
|
// 添加列表容器
|
|||
|
|
[self.view addSubview:self.listContainerView];
|
|||
|
|
[self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|||
|
|
make.top.equalTo(self.kb_navView.mas_bottom);
|
|||
|
|
make.left.right.bottom.equalTo(self.view);
|
|||
|
|
}];
|
|||
|
|
|
|||
|
|
// 关联 categoryView 和 listContainerView
|
|||
|
|
self.categoryView.listContainer = self.listContainerView;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#pragma mark - 2:绑定事件
|
|||
|
|
|
|||
|
|
- (void)bindActions {
|
|||
|
|
[self.searchButton addTarget:self action:@selector(searchButtonTapped) forControlEvents:UIControlEventTouchUpInside];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#pragma mark - Actions
|
|||
|
|
|
|||
|
|
- (void)searchButtonTapped {
|
|||
|
|
// TODO: 跳转搜索页面
|
|||
|
|
NSLog(@"搜索按钮点击");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#pragma mark - JXCategoryViewDelegate
|
|||
|
|
|
|||
|
|
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
|||
|
|
NSLog(@"选中分类:%@", self.titles[index]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#pragma mark - JXCategoryListContainerViewDelegate
|
|||
|
|
|
|||
|
|
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView {
|
|||
|
|
return self.titles.count;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index {
|
|||
|
|
if (index == 0) {
|
|||
|
|
return [[KBAIMessageZanVC alloc] init];
|
|||
|
|
} else {
|
|||
|
|
return [[KBAIMessageChatingVC alloc] init];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#pragma mark - Lazy Load
|
|||
|
|
|
|||
|
|
- (NSArray<NSString *> *)titles {
|
|||
|
|
if (!_titles) {
|
|||
|
|
_titles = @[KBLocalized(@"Thumbs Up"), KBLocalized(@"Chatting")];
|
|||
|
|
}
|
|||
|
|
return _titles;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (JXCategoryTitleView *)categoryView {
|
|||
|
|
if (!_categoryView) {
|
|||
|
|
_categoryView = [[JXCategoryTitleView alloc] init];
|
|||
|
|
_categoryView.backgroundColor = [UIColor clearColor];
|
|||
|
|
_categoryView.titles = self.titles;
|
|||
|
|
_categoryView.delegate = self;
|
|||
|
|
|
|||
|
|
// 标题样式
|
|||
|
|
_categoryView.titleFont = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold];
|
|||
|
|
_categoryView.titleSelectedFont = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold];
|
|||
|
|
_categoryView.titleColor = [UIColor colorWithHex:0x9F9F9F];
|
|||
|
|
_categoryView.titleSelectedColor = [UIColor colorWithHex:0x1B1F1A];
|
|||
|
|
|
|||
|
|
// 不需要指示器
|
|||
|
|
_categoryView.indicators = @[];
|
|||
|
|
|
|||
|
|
// 间距设置
|
|||
|
|
_categoryView.cellSpacing = 20;
|
|||
|
|
_categoryView.contentEdgeInsetLeft = 0;
|
|||
|
|
_categoryView.contentEdgeInsetRight = 0;
|
|||
|
|
_categoryView.averageCellSpacingEnabled = NO;
|
|||
|
|
|
|||
|
|
// 禁用缩放和渐变
|
|||
|
|
_categoryView.cellWidthZoomEnabled = NO;
|
|||
|
|
_categoryView.titleColorGradientEnabled = NO;
|
|||
|
|
}
|
|||
|
|
return _categoryView;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (JXCategoryListContainerView *)listContainerView {
|
|||
|
|
if (!_listContainerView) {
|
|||
|
|
_listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];
|
|||
|
|
_listContainerView.scrollView.bounces = NO;
|
|||
|
|
}
|
|||
|
|
return _listContainerView;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (UIButton *)searchButton {
|
|||
|
|
if (!_searchButton) {
|
|||
|
|
_searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|||
|
|
if (@available(iOS 13.0, *)) {
|
|||
|
|
UIImage *searchImage = [UIImage systemImageNamed:@"magnifyingglass"];
|
|||
|
|
[_searchButton setImage:searchImage forState:UIControlStateNormal];
|
|||
|
|
_searchButton.tintColor = [UIColor colorWithHex:0x1B1F1A];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return _searchButton;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@end
|