272 lines
9.9 KiB
Objective-C
272 lines
9.9 KiB
Objective-C
//
|
||
// 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
|