// // TUIGroupPinPageViewController.m // TUIChat // // Created by Tencent on 2024/05/20. // Copyright © 2023 Tencent. All rights reserved. // #import "TUIGroupPinPageViewController.h" #import #import #import #import #import #import #import "TUIGroupPinCell.h" #import "TUIMessageDataProvider.h" @interface TUIGroupPinPageViewController() @end @implementation TUIGroupPinPageViewController - (instancetype)init { self = [super init]; if (self) { self.tableview.backgroundColor = TUIChatDynamicColor(@"chat_pop_group_pin_back_color", @"#F9F9F9"); self.customArrowView.backgroundColor = TUIChatDynamicColor(@"chat_pop_group_pin_back_color", @"#F9F9F9"); self.bottomShadow.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:.5]; [self addSingleTapGesture]; } return self; } - (void)addSingleTapGesture { // When clicking on the shadow, the page disappears self.view.userInteractionEnabled = YES; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)]; [self.view addGestureRecognizer:singleTap]; } - (void)singleTap:(UITapGestureRecognizer *)tap { [UIView animateWithDuration:0.3 animations:^{ self.tableview.frame = CGRectMake(0, self.tableview.frame.origin.y, self.view.frame.size.width, 60); self.customArrowView.frame = CGRectMake(0, CGRectGetMaxY(self.tableview.frame), self.view.frame.size.width, self.customArrowView.frame.size.height); self.bottomShadow.frame = CGRectMake(0, CGRectGetMaxY(self.customArrowView.frame), self.view.frame.size.width, 0); }completion:^(BOOL finished) { if (finished) { [self dismissViewControllerAnimated:NO completion:nil]; } }]; } - (UITableView *)tableview { if (!_tableview) { _tableview = [[UITableView alloc] init]; _tableview.contentInset = UIEdgeInsetsMake(0, 0, 0, 0); _tableview.delegate = self; _tableview.dataSource = self; [_tableview setSeparatorStyle:UITableViewCellSeparatorStyleNone]; _tableview.showsVerticalScrollIndicator = NO; _tableview.showsHorizontalScrollIndicator = NO; [self.view addSubview:_tableview]; UIView *herderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 0)]; _tableview.tableHeaderView = herderView; } return _tableview; } - (UIView *)customArrowView { if (!_customArrowView) { _customArrowView = [[UIView alloc] initWithFrame:CGRectMake(0, _tableview.frame.size.height, _tableview.frame.size.width, 100)]; [self.view addSubview:_customArrowView]; UIView *arrowBackgroundView = [[UIView alloc] initWithFrame:CGRectZero]; arrowBackgroundView.backgroundColor = [UIColor clearColor]; arrowBackgroundView.layer.cornerRadius = 5; [_customArrowView addSubview:arrowBackgroundView]; _customArrowView.clipsToBounds = YES; UIImageView *arrow = [[UIImageView alloc] initWithFrame:CGRectZero]; arrow.image = TUIChatBundleThemeImage(@"chat_pop_group_pin_up_arrow_img", @"chat_up_arrow_icon"); [arrowBackgroundView addSubview:arrow]; [arrowBackgroundView mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(_customArrowView); make.size.mas_equalTo(CGSizeMake(20, 20)); }]; [arrow mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(arrowBackgroundView); make.size.mas_equalTo(CGSizeMake(20, 20)); }]; } return _customArrowView; } - (UIView *)bottomShadow { if (!_bottomShadow) { _bottomShadow = [[UIView alloc] init]; _bottomShadow.userInteractionEnabled = NO; [self.view addSubview:_bottomShadow]; } return _bottomShadow; } #pragma mark - group pin - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TUIGroupPinCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (cell == nil) { cell = [[TUIGroupPinCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; } cell.backgroundColor = [UIColor systemGroupedBackgroundColor]; V2TIMMessage *msg = self.groupPinList[indexPath.row]; TUIMessageCellData * cellData = [TUIMessageDataProvider getCellData:msg]; [cell fillWithData:cellData]; __weak __typeof(self) weakSelf = self; cell.cellView.removeButton.hidden = !self.canRemove; cell.cellView.onClickRemove = ^(V2TIMMessage *originMessage) { if (weakSelf.onClickRemove) { weakSelf.onClickRemove(originMessage); } }; cell.cellView.onClickCellView = ^(V2TIMMessage *originMessage) { if (weakSelf.onClickCellView) { weakSelf.onClickCellView(originMessage); } [weakSelf singleTap:nil]; }; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.groupPinList.count; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { CGFloat contentH = 62; CGFloat padding = 0; return contentH + padding; } @end