| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- //
- // MORedEnvelopeCell.m
- // MiMoLive
- //
- // Created by SuperC on 2025/6/9.
- //
- #import "MORedEnvelopeCell.h"
- @interface MORedEnvelopeCell ()
- @property (nonatomic, strong) UIView *redBgView;
- @property (nonatomic, strong) UIImageView *iconImageView;
- @property (nonatomic, strong) UILabel *titleLabel;
- @property (nonatomic, strong) UIButton *actionButton;
- @end
- @implementation MORedEnvelopeCell
- - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
- self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
- if (self != nil) {
- self.contentView.transform = CGAffineTransformMakeScale(1, -1);
- self.backgroundColor = [UIColor clearColor];
- self.selectionStyle = UITableViewCellSelectionStyleNone;
-
- [self setupUI];
- }
-
- return self;
- }
- - (void)setupUI{
- [self.contentView addSubview:self.redBgView];
- [self.redBgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.contentView).offset(MOBgViewOffSet);
- make.bottom.equalTo(self.contentView).offset(-MOBgViewOffSet);
- make.height.equalTo(@(MOTextRedEnvelopeViewHeight));
- make.width.equalTo(@220.0);
- }];
-
- [self.redBgView addSubview:self.iconImageView];
- [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.redBgView);
- make.width.equalTo(@33.0);
- make.height.equalTo(@38.0);
- make.left.equalTo(self.redBgView).offset(16.0);
- }];
-
- [self.redBgView addSubview:self.titleLabel];
- [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.iconImageView.mas_right).offset(8.0);
- make.top.equalTo(self.iconImageView.mas_top).offset(0.0);
- make.height.equalTo(@16.0);
- make.right.equalTo(self.redBgView).offset(-10.0);
- }];
-
- [self.redBgView addSubview:self.actionButton];
- [self.actionButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.iconImageView.mas_right).offset(8.0);
- make.top.equalTo(self.titleLabel.mas_bottom).offset(4.0);
- make.right.equalTo(self.redBgView).offset(-10.0);
- }];
-
- [self.contentView addSubview:self.bgView];
- [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.contentView).offset(MOBgViewOffSet);
- make.width.equalTo(@(MOBgViewMaxWidth));
- make.top.equalTo(self.contentView).offset(MOBgViewOffSet);
- make.bottom.equalTo(self.redBgView.mas_top).offset(-MOBgViewOffSet);
- }];
- self.bgView.layer.cornerRadius = 10.0;
-
- [self.bgView addSubview:self.bubbleImgView];
- [self.bubbleImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.bgView).offset(-MOBgViewOffSet);
- make.right.equalTo(self.bgView).offset(MOBgViewOffSet);
- make.top.equalTo(self.bgView).offset(-MOBgViewOffSet);
- make.bottom.equalTo(self.bgView).offset(MOBgViewOffSet);
-
- }];
-
- [self.bgView addSubview:self.contentTextView];
- [self.contentTextView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.bgView).offset(MOContentLeftAndRighSpacing);
- make.right.equalTo(self.bgView).offset(-MOContentLeftAndRighSpacing);
- make.centerY.equalTo(self.bgView);
- make.height.equalTo(@16.0);
- }];
-
- self.contentView.userInteractionEnabled = YES;
- _bubbleTapGestureRecognizer = [UITapGestureRecognizer new];
- [_bubbleTapGestureRecognizer addTarget:self action:@selector(bubbleTapped:)];
- _bubbleTapGestureRecognizer.delegate = self;
- [self.contentView addGestureRecognizer:self.bubbleTapGestureRecognizer];
-
- _bubbleLongPressGestureRecognizer = [UILongPressGestureRecognizer new];
- [_bubbleLongPressGestureRecognizer addTarget:self action:@selector(bubbleLongPressHandler:)];
- [self.contentView addGestureRecognizer:self.bubbleLongPressGestureRecognizer];
- }
- - (void)bubbleTapped:(UITapGestureRecognizer *)recognizer
- {
- MOLogV(@"触发了点击");
- self.cellTapBlock ? self.cellTapBlock(self.cellModel) : nil;
- }
- - (void)bubbleLongPressHandler:(UILongPressGestureRecognizer *)recognizer{
- if (recognizer.state == UIGestureRecognizerStateBegan){
-
- MOLogV(@"触发了长按");
-
- self.cellLongPressBlock ? self.cellLongPressBlock(self.cellModel) : nil;
-
- recognizer.enabled = NO;
- }
- else if (recognizer.state == UIGestureRecognizerStateEnded || recognizer.state == UIGestureRecognizerStateCancelled)
- {
- recognizer.enabled = YES;
- }
- }
- - (void)awakeFromNib {
- [super awakeFromNib];
- // Initialization code
- }
- - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
- [super setSelected:selected animated:animated];
- // Configure the view for the selected state
- }
- - (void)setCellModel:(MORtmEntity *)cellModel{
- _cellModel = cellModel;
-
- NSMutableAttributedString *attributedString = [MOTextTools creteTextWith:cellModel];
- self.contentTextView.attributedText = attributedString;
-
- // 计算文本高度
- CGFloat contentHeight = cellModel.cellHeight - MOTextRedEnvelopeViewHeight;
- if(contentHeight < MORtmContentMixHeight){
- contentHeight = MORtmContentMixHeight;
- }
- [self.contentTextView mas_updateConstraints:^(MASConstraintMaker *make) {
- make.height.equalTo(@(contentHeight));
- }];
-
- self.bgView.backgroundColor = MONormalBgViewColor;
-
- MORtmJosnEntity *jsonEntity = (MORtmJosnEntity *)cellModel.data;
-
- MORtmUser *rtmUser = cellModel.user;
- if(rtmUser.bubble != 0){
- UIImage *bubbleImg = [MOTextTools getBubbleImgWithCodeNum:rtmUser.bubble];
- if(bubbleImg){
- [self.bubbleImgView setImage:bubbleImg];
- self.bubbleImgView.hidden = NO;
- self.bgView.backgroundColor = [UIColor clearColor];
- }
- else{
- self.bubbleImgView.hidden = YES;
- }
- }
- else{
- self.bubbleImgView.hidden = YES;
- }
-
- if(cellModel.cellHeight > ((28.0 + MOTextRedEnvelopeViewHeight))){
- [self.bgView mas_updateConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(MOBgViewMaxWidth));
- }];
- }
- else{
- CGFloat width = cellModel.contentWidth + MOContentLeftAndRighSpacing * 2.0 + MOContentOffSet * 2.0;
- if(width > MOBgViewMaxWidth){
- width = MOBgViewMaxWidth;
- }
-
- if(width < MOBgViewMinWidth){
- width = MOBgViewMinWidth;
- }
- [self.bgView mas_updateConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(width));
- }];
- }
- }
- #pragma mark - Lazy
- - (UIView *)redBgView{
- if (!_redBgView) {
- _redBgView = [[UIView alloc] init];
- _redBgView.backgroundColor = [MOTools colorWithHexString:@"#FF4DA6"];
- _redBgView.layer.cornerRadius = 12.0;
- _redBgView.layer.masksToBounds = YES;
- }
- return _redBgView;
- }
- - (UIImageView *)iconImageView{
- if (!_iconImageView) {
- _iconImageView = [[UIImageView alloc] init];
- _iconImageView.image = [UIImage imageNamed:@"icon_live_red_p"];
- _iconImageView.contentMode = UIViewContentModeScaleAspectFill;
- }
- return _iconImageView;
- }
- - (UILabel *)titleLabel{
- if (!_titleLabel) {
- _titleLabel = [[UILabel alloc] init];
- _titleLabel.textColor = [UIColor whiteColor];
- _titleLabel.font = [MOTextTools mediumFont:14.0];
- _titleLabel.text = NSLocalString(@"mimo_2_rtm_angpao");
- }
- return _titleLabel;
- }
- - (UIButton *)actionButton{
- if (!_actionButton) {
- _actionButton = [UIButton buttonWithType:UIButtonTypeCustom];
- [_actionButton setTitle:NSLocalString(@"mimo_2_rtm_angpao_tip") forState:UIControlStateNormal];
- [_actionButton setTitleColor:[MOTools colorWithHexString:@"#FFE254"] forState:UIControlStateNormal];
- _actionButton.titleLabel.font = [MOTextTools mediumFont:14.0];
- [_actionButton setImage:[UIImage imageNamed:@"v_2_new_yellow_right"] forState:UIControlStateNormal];
- _actionButton.userInteractionEnabled = NO;
- _actionButton.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
- _actionButton.imageEdgeInsets = UIEdgeInsetsMake(0, 2, 0, 0);
- _actionButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
- [_actionButton setFont:[MOTextTools mediumFont:13.0]];
- }
- return _actionButton;
- }
- - (UIView *)bgView
- {
- if (_bgView == nil)
- {
- _bgView = [UIView new];
- _bgView.backgroundColor = MONormalBgViewColor;
- }
- return _bgView;
- }
- - (UIImageView *)bubbleImgView{
- if(!_bubbleImgView){
- _bubbleImgView = [[UIImageView alloc] init];
- [_bubbleImgView setImage:[UIImage imageNamed:@""]];
- }
- return _bubbleImgView;
- }
- - (MOMsgContentTextView *)contentTextView{
- if(!_contentTextView){
- _contentTextView = [MOMsgContentTextView new];
- _contentTextView.backgroundColor = [UIColor clearColor];
- _contentTextView.textContainerInset = UIEdgeInsetsMake(MOContentBaseTopSpcing, MOContentBaseLeftSpacing, MOContentBaseBottomSpcing, MOContentBaseRightSpacing);//UITextView原本文字距离左右有间距,设置负数消除边距
- _contentTextView.editable = NO;
- _contentTextView.scrollEnabled = NO;//防止滑出屏幕又滑入时有时单行文字消失
- _contentTextView.userInteractionEnabled = NO;
- _contentTextView.textColor = [MOTools colorWithHexString:@"#FFFFFF" alpha:1.0];
- }
- return _contentTextView;
- }
- @end
|