133 lines
4.4 KiB
Objective-C
133 lines
4.4 KiB
Objective-C
//
|
|
// TUIContactCommonTextCell.m
|
|
// TXIMSDK_TUIKit_iOS
|
|
//
|
|
// Created by annidyfeng on 2019/5/5.
|
|
// Copyright © 2023 Tencent. All rights reserved.
|
|
//
|
|
|
|
#import "TUICommonContactTextCell.h"
|
|
#import <TIMCommon/TIMDefine.h>
|
|
#import <TUICore/TUIThemeManager.h>
|
|
|
|
@implementation TUICommonContactTextCellData
|
|
- (instancetype)init {
|
|
self = [super init];
|
|
self.keyEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
|
|
return self;
|
|
}
|
|
|
|
- (CGFloat)heightOfWidth:(CGFloat)width {
|
|
CGFloat height = [super heightOfWidth:width];
|
|
if (self.enableMultiLineValue) {
|
|
NSString *str = self.value;
|
|
NSDictionary *attribute = @{NSFontAttributeName : [UIFont systemFontOfSize:16]};
|
|
CGSize size = [str boundingRectWithSize:CGSizeMake(280, 999)
|
|
options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
|
|
attributes:attribute
|
|
context:nil]
|
|
.size;
|
|
height = size.height + 30;
|
|
}
|
|
return height;
|
|
}
|
|
|
|
@end
|
|
|
|
@interface TUICommonContactTextCell ()
|
|
@property TUICommonContactTextCellData *textData;
|
|
@end
|
|
|
|
@implementation TUICommonContactTextCell
|
|
|
|
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
|
if (self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier]) {
|
|
self.backgroundColor = TIMCommonDynamicColor(@"form_bg_color", @"#FFFFFF");
|
|
self.contentView.backgroundColor = TIMCommonDynamicColor(@"form_bg_color", @"#FFFFFF");
|
|
|
|
_keyLabel = [[UILabel alloc] init];
|
|
_keyLabel.textColor = TIMCommonDynamicColor(@"form_key_text_color", @"#444444");
|
|
_keyLabel.font = [UIFont systemFontOfSize:16.0];
|
|
[self.contentView addSubview:_keyLabel];
|
|
[_keyLabel setRtlAlignment:TUITextRTLAlignmentTrailing];
|
|
|
|
_valueLabel = [[UILabel alloc] init];
|
|
[self.contentView addSubview:_valueLabel];
|
|
|
|
_valueLabel.textColor = TIMCommonDynamicColor(@"form_value_text_color", @"#000000");
|
|
_valueLabel.font = [UIFont systemFontOfSize:16.0];
|
|
[_valueLabel setRtlAlignment:TUITextRTLAlignmentTrailing];
|
|
|
|
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
|
|
- (void)fillWithData:(TUICommonContactTextCellData *)textData {
|
|
[super fillWithData:textData];
|
|
|
|
self.textData = textData;
|
|
RAC(_keyLabel, text) = [RACObserve(textData, key) takeUntil:self.rac_prepareForReuseSignal];
|
|
RAC(_valueLabel, text) = [RACObserve(textData, value) takeUntil:self.rac_prepareForReuseSignal];
|
|
|
|
if (textData.showAccessory) {
|
|
self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
|
|
} else {
|
|
self.accessoryType = UITableViewCellAccessoryNone;
|
|
}
|
|
|
|
if (self.textData.keyColor) {
|
|
self.keyLabel.textColor = self.textData.keyColor;
|
|
}
|
|
|
|
if (self.textData.valueColor) {
|
|
self.valueLabel.textColor = self.textData.valueColor;
|
|
}
|
|
|
|
if (self.textData.enableMultiLineValue) {
|
|
self.valueLabel.numberOfLines = 0;
|
|
} else {
|
|
self.valueLabel.numberOfLines = 1;
|
|
}
|
|
// tell constraints they need updating
|
|
[self setNeedsUpdateConstraints];
|
|
|
|
// update constraints now so we can animate the change
|
|
[self updateConstraintsIfNeeded];
|
|
|
|
[self layoutIfNeeded];
|
|
}
|
|
|
|
+ (BOOL)requiresConstraintBasedLayout {
|
|
return YES;
|
|
}
|
|
|
|
// this is Apple's recommended place for adding/updating constraints
|
|
- (void)updateConstraints {
|
|
[super updateConstraints];
|
|
|
|
[self.keyLabel sizeToFit];
|
|
[self.keyLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
make.size.mas_equalTo(self.keyLabel.frame.size);
|
|
make.leading.mas_equalTo(self.contentView).mas_offset(self.textData.keyEdgeInsets.left);
|
|
make.centerY.mas_equalTo(self.contentView);
|
|
}];
|
|
|
|
|
|
[self.valueLabel sizeToFit];
|
|
[self.valueLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
make.leading.mas_equalTo(self.keyLabel.mas_trailing).mas_offset(10);
|
|
if (self.textData.showAccessory) {
|
|
make.trailing.mas_equalTo(self.contentView.mas_trailing).mas_offset(-10);
|
|
}
|
|
else {
|
|
make.trailing.mas_equalTo(self.contentView.mas_trailing).mas_offset(-20);
|
|
}
|
|
make.centerY.mas_equalTo(self.contentView);
|
|
}];
|
|
|
|
}
|
|
|
|
@end
|