Files
peko-ios/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.m
2024-04-11 17:05:27 +08:00

272 lines
9.9 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// YMMineVisitorTableViewCell.m
// YUMI
//
// Created by YUMI on 2022/1/26.
//
#import "XPMineVisitorTableViewCell.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "DJDKMIMOMColor.h"
#import "NetImageView.h"
#import "XPMineVisitorItemModel.h"
@interface XPMineVisitorTableViewCell()
@property (nonatomic, strong) UIView *bgView;
@property (nonatomic ,strong) NetImageView *avaterImgView;
@property (nonatomic, strong) UIButton *genderImageView;
@property (nonatomic, strong) UILabel *nickLabel;
@property (nonatomic ,strong) UILabel *memberIdLabel;
@property (nonatomic ,strong) UIButton *tagPic;
@property (nonatomic ,strong) UILabel *timeLabel;
@property (nonatomic, strong) UIView *lineView;
@end
@implementation XPMineVisitorTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self setUpUI];
[self setUpConstraints];
}
return self;
}
- (void)drawRect:(CGRect)rect {
if (self.isLastItem && self.isFirstItem) {
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = path.CGPath;
self.bgView.layer.mask = maskLayer;
} else if (self.isFirstItem) {
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = path.CGPath;
self.bgView.layer.mask = maskLayer;
} else if (self.isLastItem) {
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = path.CGPath;
self.bgView.layer.mask = maskLayer;
} else {
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(0, 0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = path.CGPath;
self.bgView.layer.mask = maskLayer;
}
}
- (void)layoutSubviews {
[super layoutSubviews];
[self updateBgViewConstraints];
}
#pragma mark - lifeCycle
- (void)setUpUI {
self.backgroundColor = [UIColor clearColor];
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self.contentView addSubview:self.bgView];
[self.bgView addSubview:self.avaterImgView];
[self.bgView addSubview:self.nickLabel];
[self.bgView addSubview:self.genderImageView];
[self.bgView addSubview:self.memberIdLabel];
[self.bgView addSubview:self.tagPic];
[self.bgView addSubview:self.timeLabel];
[self.bgView addSubview:self.lineView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onCliekAvatar:)];
[self.avaterImgView addGestureRecognizer:tap];
}
#pragma mark - Constraints
- (void)setUpConstraints {
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(0);
make.trailing.mas_equalTo(-15);
make.leading.mas_equalTo(15);
make.height.mas_equalTo(70);
make.bottom.mas_equalTo(0);
}];
[self.avaterImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(15);
make.width.height.mas_equalTo(40);
make.centerY.mas_equalTo(self.bgView.mas_centerY);
}];
[self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self.avaterImgView.mas_trailing).mas_offset(10);
make.bottom.mas_equalTo(self.avaterImgView.mas_centerY).mas_offset(-4);
}];
[self.genderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(self.nickLabel.mas_centerY);
make.height.mas_equalTo(14);
make.width.mas_equalTo(28);
make.leading.mas_equalTo(self.nickLabel.mas_trailing).mas_offset(5);
make.trailing.mas_lessThanOrEqualTo(self.tagPic.mas_leading).mas_offset(-5);
}];
[self.tagPic mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.timeLabel.mas_top).mas_offset((-1));
make.trailing.mas_equalTo(-15);
make.width.height.mas_equalTo(22);
}];
[self.memberIdLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.avaterImgView.mas_centerY).mas_offset(4);
make.leading.mas_equalTo(self.nickLabel);
}];
[self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.trailing.mas_equalTo(-15);
make.centerY.mas_equalTo(self.memberIdLabel.mas_centerY);
make.height.mas_equalTo(11);
}];
[self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(0);
make.leading.mas_equalTo(self.avaterImgView);
make.trailing.mas_equalTo(-15);
make.height.mas_equalTo(0.5);
}];
}
- (void)updateBgViewConstraints {
if (self.isFirstItem) {
[self.bgView mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(10);
make.trailing.mas_equalTo(-15);
make.leading.mas_equalTo(15);
make.height.mas_equalTo(70);
make.bottom.mas_equalTo(0);
}];
} else {
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(0);
make.trailing.mas_equalTo(-15);
make.leading.mas_equalTo(15);
make.height.mas_equalTo(70);
make.bottom.mas_equalTo(0);
}];
}
}
#pragma mark - event
- (void)onChatButtonClick:(UIButton *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(onChatClick:)]) {
[self.delegate onChatClick:self];
}
}
- (void)onCliekAvatar:(UITapGestureRecognizer *)ges {
if (self.delegate && [self.delegate respondsToSelector:@selector(onAvatarClick:)]) {
[self.delegate onAvatarClick:self];
}
}
/** 最后一个数据 配置圆角 */
- (void)setIsFirstItem:(BOOL)isFirstItem{
_isFirstItem = isFirstItem;
}
- (void)setIsLastItem:(BOOL)isLastItem {
_isLastItem = isLastItem;
}
- (void)setItem:(XPMineVisitorItemModel *)item {
_item = item;
self.nickLabel.text = item.nick;
self.avaterImgView.imageUrl = item.avatar;
self.memberIdLabel.text = [NSString stringWithFormat:@"ID%zd", item.erbanNo];
self.timeLabel.text = item.visitTimeDesc;
[self.genderImageView setTitle:[NSString getAgeWithBirth:_item.birth] forState:UIControlStateNormal];
self.genderImageView.backgroundColor = item.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC);
self.genderImageView.selected = item.gender != GenderType_Male;
self.genderImageView.titleEdgeInsets = item.gender != GenderType_Male ? UIEdgeInsetsMake(0, 2, 0, 0):UIEdgeInsetsMake(0, -1, 0, 0);
}
- (NetImageView *)avaterImgView {
if (!_avaterImgView) {
_avaterImgView = [[NetImageView alloc] init];
_avaterImgView.contentMode = UIViewContentModeScaleAspectFit;
_avaterImgView.layer.cornerRadius = 20;
_avaterImgView.layer.masksToBounds = YES;
_avaterImgView.userInteractionEnabled = YES;
}
return _avaterImgView;
}
- (UIView *)bgView {
if (!_bgView) {
_bgView = [[UIView alloc] init];
_bgView.backgroundColor = UIColorFromRGB(0xFFFFFF);
}
return _bgView;
}
- (UILabel *)nickLabel {
if (!_nickLabel) {
_nickLabel = [[UILabel alloc] init];
_nickLabel.textColor = UIColorFromRGB(0x333333);
_nickLabel.font = [UIFont systemFontOfSize:13];
_nickLabel.text = YMLocalizedString(@"XPMineVisitorTableViewCell0");
}
return _nickLabel;
}
- (UIButton *)genderImageView {
if (!_genderImageView) {
_genderImageView = [[UIButton alloc] init];
[_genderImageView setImage:kImage(@"home_age_boy_icon") forState:UIControlStateNormal];
[_genderImageView setImage:kImage(@"home_age_girl_icon") forState:UIControlStateSelected];
_genderImageView.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];
[_genderImageView setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_genderImageView.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
_genderImageView.layer.cornerRadius = 14/2;
_genderImageView.layer.masksToBounds = YES;
}
return _genderImageView;
}
- (UILabel *)memberIdLabel {
if (!_memberIdLabel) {
_memberIdLabel = [[UILabel alloc] init];
_memberIdLabel.textColor = UIColorFromRGB(0x999999);
_memberIdLabel.font = [UIFont systemFontOfSize:13];
_memberIdLabel.text = @"";
}
return _memberIdLabel;
}
- (UIButton *)tagPic {
if (!_tagPic) {
_tagPic = [[UIButton alloc] init];
[_tagPic setImage:[UIImage imageNamed:@"visitor_record_letter"] forState:UIControlStateNormal];
[_tagPic addTarget:self action:@selector(onChatButtonClick:) forControlEvents:UIControlEventTouchUpInside];
}
return _tagPic;
}
- (UILabel *)timeLabel {
if (!_timeLabel) {
_timeLabel = [[UILabel alloc] init];
_timeLabel.text = @"0";
_timeLabel.textColor = UIColorFromRGB(0x999999);
_timeLabel.font = [UIFont boldSystemFontOfSize:10];
}
return _timeLabel;
}
- (UIView *)lineView {
if (!_lineView) {
_lineView = [[UIView alloc] init];
_lineView.backgroundColor = UIColorFromRGB(0xf5f5f5);
}
return _lineView;
}
@end