From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversationList/EaseConversationCell.m | 303 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 303 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversationList/EaseConversationCell.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversationList/EaseConversationCell.m new file mode 100755 index 0000000..54a4e49 --- /dev/null +++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversationList/EaseConversationCell.m @@ -0,0 +1,303 @@ +/************************************************************ + * * Hyphenate CONFIDENTIAL + * __________________ + * Copyright (C) 2016 Hyphenate Inc. All rights reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Hyphenate Inc. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Hyphenate Inc. + */ + +#import "EaseConversationCell.h" + +#if ENABLE_LITE == 1 +#import <HyphenateLite/EMConversation.h> +#else +#import <Hyphenate/EMConversation.h> +#endif +#import "UIImageView+WebCache.h" + +CGFloat const EaseConversationCellPadding = 10; + +@interface EaseConversationCell() + +@property (nonatomic) NSLayoutConstraint *titleWithAvatarLeftConstraint; + +@property (nonatomic) NSLayoutConstraint *titleWithoutAvatarLeftConstraint; + +@property (nonatomic) NSLayoutConstraint *detailWithAvatarLeftConstraint; + +@property (nonatomic) NSLayoutConstraint *detailWithoutAvatarLeftConstraint; + +@end + +@implementation EaseConversationCell + ++ (void)initialize +{ + // UIAppearance Proxy Defaults + /** @brief ������������ */ + EaseConversationCell *cell = [self appearance]; + cell.titleLabelColor = [UIColor blackColor]; + cell.titleLabelFont = [UIFont systemFontOfSize:17]; + cell.detailLabelColor = [UIColor lightGrayColor]; + cell.detailLabelFont = [UIFont systemFontOfSize:15]; + cell.timeLabelColor = [UIColor blackColor]; + cell.timeLabelFont = [UIFont systemFontOfSize:13]; +} + +- (instancetype)initWithStyle:(UITableViewCellStyle)style + reuseIdentifier:(NSString *)reuseIdentifier +{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + _showAvatar = YES; + [self _setupSubview]; + } + + return self; +} + +#pragma mark - private layout subviews + +/*! + @method + @brief ������������ + @discussion + @return + */ +- (void)_setupSubview +{ + self.accessibilityIdentifier = @"table_cell"; + + _avatarView = [[EaseImageView alloc] init]; + _avatarView.translatesAutoresizingMaskIntoConstraints = NO; + [self.contentView addSubview:_avatarView]; + + _timeLabel = [[UILabel alloc] init]; + _timeLabel.translatesAutoresizingMaskIntoConstraints = NO; + _timeLabel.font = _timeLabelFont; + _timeLabel.textColor = _timeLabelColor; + _timeLabel.textAlignment = NSTextAlignmentRight; + _timeLabel.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:_timeLabel]; + + _titleLabel = [[UILabel alloc] init]; + _titleLabel.accessibilityIdentifier = @"title"; + _titleLabel.translatesAutoresizingMaskIntoConstraints = NO; + _titleLabel.numberOfLines = 1; + _titleLabel.backgroundColor = [UIColor clearColor]; + _titleLabel.font = _titleLabelFont; + _titleLabel.textColor = _titleLabelColor; + [self.contentView addSubview:_titleLabel]; + + _detailLabel = [[UILabel alloc] init]; + _detailLabel.translatesAutoresizingMaskIntoConstraints = NO; + _detailLabel.backgroundColor = [UIColor clearColor]; + _detailLabel.font = _detailLabelFont; + _detailLabel.textColor = _detailLabelColor; + [self.contentView addSubview:_detailLabel]; + + [self _setupAvatarViewConstraints]; + [self _setupTimeLabelConstraints]; + [self _setupTitleLabelConstraints]; + [self _setupDetailLabelConstraints]; +} + +#pragma mark - Setup Constraints + +/*! + @method + @brief ������avatarView��������� + @discussion + @return + */ +- (void)_setupAvatarViewConstraints +{ + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.avatarView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.avatarView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.avatarView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.avatarView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.avatarView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.avatarView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0]]; +} + +/*! + @method + @brief ������timeLabel��������� + @discussion + @return + */ +- (void)_setupTimeLabelConstraints +{ + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.timeLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.timeLabel attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-EaseConversationCellPadding]]; + + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.timeLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeHeight multiplier:0.5 constant:0]]; +} + +/*! + @method + @brief ������titleLabel��������� + @discussion + @return + */ +- (void)_setupTitleLabelConstraints +{ + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.titleLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.titleLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeHeight multiplier:0.5 constant:-EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.titleLabel attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.timeLabel attribute:NSLayoutAttributeLeft multiplier:1.0 constant:-EaseConversationCellPadding]]; + + self.titleWithAvatarLeftConstraint = [NSLayoutConstraint constraintWithItem:self.titleLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.avatarView attribute:NSLayoutAttributeRight multiplier:1.0 constant:EaseConversationCellPadding]; + self.titleWithoutAvatarLeftConstraint = [NSLayoutConstraint constraintWithItem:self.titleLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:EaseConversationCellPadding]; + [self addConstraint:self.titleWithAvatarLeftConstraint]; +} + +/*! + @method + @brief ������detailLabel��������� + @discussion + @return + */ +- (void)_setupDetailLabelConstraints +{ + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.detailLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.titleLabel attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.detailLabel attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-EaseConversationCellPadding]]; + [self addConstraint:[NSLayoutConstraint constraintWithItem:self.detailLabel attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-EaseConversationCellPadding]]; + + self.detailWithAvatarLeftConstraint = [NSLayoutConstraint constraintWithItem:self.detailLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.avatarView attribute:NSLayoutAttributeRight multiplier:1.0 constant:EaseConversationCellPadding]; + self.detailWithoutAvatarLeftConstraint = [NSLayoutConstraint constraintWithItem:self.detailLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:EaseConversationCellPadding]; + [self addConstraint:self.detailWithAvatarLeftConstraint]; +} + +#pragma mark - setter + +- (void)setShowAvatar:(BOOL)showAvatar +{ + if (_showAvatar != showAvatar) { + _showAvatar = showAvatar; + self.avatarView.hidden = !showAvatar; + if (_showAvatar) { + [self removeConstraint:self.titleWithoutAvatarLeftConstraint]; + [self removeConstraint:self.detailWithoutAvatarLeftConstraint]; + [self addConstraint:self.titleWithAvatarLeftConstraint]; + [self addConstraint:self.detailWithAvatarLeftConstraint]; + } + else{ + [self removeConstraint:self.titleWithAvatarLeftConstraint]; + [self removeConstraint:self.detailWithAvatarLeftConstraint]; + [self addConstraint:self.titleWithoutAvatarLeftConstraint]; + [self addConstraint:self.detailWithoutAvatarLeftConstraint]; + } + } +} + +- (void)setModel:(id<IConversationModel>)model +{ + _model = model; + + if ([_model.title length] > 0) { + self.titleLabel.text = _model.title; + } + else{ + self.titleLabel.text = _model.conversation.conversationId; + } + + if (self.showAvatar) { + if ([_model.avatarURLPath length] > 0){ + [self.avatarView.imageView sd_setImageWithURL:[NSURL URLWithString:_model.avatarURLPath] placeholderImage:_model.avatarImage]; + } else { + if (_model.avatarImage) { + self.avatarView.image = _model.avatarImage; + } + } + } + + if (_model.conversation.unreadMessagesCount == 0) { + _avatarView.showBadge = NO; + } + else{ + _avatarView.showBadge = YES; + _avatarView.badge = _model.conversation.unreadMessagesCount; + } +} + +- (void)setTitleLabelFont:(UIFont *)titleLabelFont +{ + _titleLabelFont = titleLabelFont; + _titleLabel.font = _titleLabelFont; +} + +- (void)setTitleLabelColor:(UIColor *)titleLabelColor +{ + _titleLabelColor = titleLabelColor; + _titleLabel.textColor = _titleLabelColor; +} + +- (void)setDetailLabelFont:(UIFont *)detailLabelFont +{ + _detailLabelFont = detailLabelFont; + _detailLabel.font = _detailLabelFont; +} + +- (void)setDetailLabelColor:(UIColor *)detailLabelColor +{ + _detailLabelColor = detailLabelColor; + _detailLabel.textColor = _detailLabelColor; +} + +- (void)setTimeLabelFont:(UIFont *)timeLabelFont +{ + _timeLabelFont = timeLabelFont; + _timeLabel.font = _timeLabelFont; +} + +- (void)setTimeLabelColor:(UIColor *)timeLabelColor +{ + _timeLabelColor = timeLabelColor; + _timeLabel.textColor = _timeLabelColor; +} + +#pragma mark - class method + +/*! + @method + @brief ������cell��������������� + @discussion + @param model ������model + @return ������cell��������������� + */ ++ (NSString *)cellIdentifierWithModel:(id)model +{ + return @"EaseConversationCell"; +} + +/*! + @method + @brief ������cell��������� + @discussion + @param model ������model + @return ������cell��������� + */ ++ (CGFloat)cellHeightWithModel:(id)model +{ + return EaseConversationCellMinHeight; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated +{ + [super setSelected:selected animated:animated]; + if (_avatarView.badge) { + _avatarView.badgeBackgroudColor = [UIColor redColor]; + } +} + +-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{ + [super setHighlighted:highlighted animated:animated]; + if (_avatarView.badge) { + _avatarView.badgeBackgroudColor = [UIColor redColor]; + } +} + +@end -- Gitblit v1.8.0