2
This commit is contained in:
170
keyBoard/Class/AiTalk/VC/KBAIMessageVC.m
Normal file
170
keyBoard/Class/AiTalk/VC/KBAIMessageVC.m
Normal file
@@ -0,0 +1,170 @@
|
||||
//
|
||||
// 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
|
||||
Reference in New Issue
Block a user