| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- //
- // TUIChatPopContextExtionView.m
- // TUIEmojiPlugin
- //
- // Created by wyl on 2023/12/1.
- // Copyright © 2023 Tencent. All rights reserved.
- //
- #import "TUIChatPopContextExtionView.h"
- #import <TIMCommon/NSString+TUIEmoji.h>
- #import <TIMCommon/TIMCommonModel.h>
- #import <TIMCommon/TIMDefine.h>
- #import <TIMCommon/TUIFitButton.h>
- #import <TIMCommon/TIMCommonMediator.h>
- #import <TIMCommon/TUIEmojiMeditorProtocol.h>
- @implementation TUIChatPopContextExtionItem
- - (instancetype)initWithTitle:(NSString *)title markIcon:(UIImage *)markIcon weight:(NSInteger)weight withActionHandler:(void (^)(id action))actionHandler {
- self = [super init];
- if (self) {
- _title = title;
- _markIcon = markIcon;
- _weight = weight;
- _actionHandler = actionHandler;
- }
- return self;
- }
- @end
- @interface TUIChatPopContextExtionItemView : UIView
- @property(nonatomic, strong) TUIChatPopContextExtionItem *item;
- @property(nonatomic, strong) UIImageView *icon;
- @property(nonatomic, strong) UILabel *l;
- - (void)configBaseUIWithItem:(TUIChatPopContextExtionItem *)item;
- @end
- @implementation TUIChatPopContextExtionItemView
- - (void)configBaseUIWithItem:(TUIChatPopContextExtionItem *)item {
- self.item = item;
- CGFloat itemWidth = self.frame.size.width;
- CGFloat padding = kScale390(16);
- CGFloat itemHeight = self.frame.size.height;
- UIImageView *icon = [[UIImageView alloc] init];
- [self addSubview:icon];
- icon.frame = CGRectMake(itemWidth - padding - kScale390(18), itemHeight * 0.5 - kScale390(18) * 0.5, kScale390(18), kScale390(18));
- icon.image = self.item.markIcon;
- UILabel *l = [[UILabel alloc] init];
- l.frame = CGRectMake(padding, 0, itemWidth * 0.5, itemHeight);
- l.text = self.item.title;
- l.font = item.titleFont ?: [UIFont systemFontOfSize:kScale390(16)];
- l.textAlignment = isRTL()? NSTextAlignmentRight:NSTextAlignmentLeft;
- l.textColor = item.titleColor ?: [UIColor blackColor];
- l.userInteractionEnabled = false;
- [self addSubview:l];
- UIButton *backButton = [UIButton buttonWithType:UIButtonTypeSystem];
- [backButton addTarget:self action:@selector(buttonclick) forControlEvents:UIControlEventTouchUpInside];
- backButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
- backButton.frame = CGRectMake(0, 0, itemWidth, itemHeight);
- [self addSubview:backButton];
- if (item.needBottomLine) {
- UIView *line = [UIView new];
- line.backgroundColor = [UIColor tui_colorWithHex:@"DDDDDD"];
- line.frame = CGRectMake(0, itemHeight - kScale390(0.5), itemWidth, kScale390(0.5));
- [self addSubview:line];
- }
- self.layer.masksToBounds = YES;
- if (isRTL()) {
- for (UIView *subview in self.subviews) {
- [subview resetFrameToFitRTL];
- }
- }
- }
- - (void)buttonclick {
- if (self.item.actionHandler) {
- self.item.actionHandler(self.item);
- }
- }
- @end
- @interface TUIChatPopContextExtionView ()
- @property(nonatomic, strong) NSMutableArray<TUIChatPopContextExtionItem *> *items;
- @end
- @implementation TUIChatPopContextExtionView
- - (void)configUIWithItems:(NSMutableArray<TUIChatPopContextExtionItem *> *)items topBottomMargin:(CGFloat)topBottomMargin {
- if (self.subviews.count > 0) {
- for (UIView *subview in self.subviews) {
- if (subview) {
- [subview removeFromSuperview];
- }
- }
- }
- int i = 0;
- for (TUIChatPopContextExtionItem *item in items) {
- TUIChatPopContextExtionItemView *itemView = [[TUIChatPopContextExtionItemView alloc] init];
- itemView.frame = CGRectMake(0, (kScale390(40)) * i + topBottomMargin, kScale390(180), kScale390(40));
- [itemView configBaseUIWithItem:item];
- [self addSubview:itemView];
- i++;
- }
- }
- @end
|