167 lines
5.4 KiB
Objective-C
167 lines
5.4 KiB
Objective-C
//
|
|
// MSRoomOnLineView.m
|
|
// YuMi
|
|
//
|
|
// Created by duoban on 2024/5/20.
|
|
//
|
|
|
|
#import "MSRoomOnLineView.h"
|
|
#import "XPMessageRemoteExtModel.h"
|
|
#import "MSRoomOnLineAvatarView.h"
|
|
@interface MSRoomOnLineView()
|
|
///在线数量背景
|
|
@property(nonatomic,strong) UIView *countBgView;
|
|
///在线数量logo
|
|
@property(nonatomic,strong) UIImageView *countIconView;
|
|
///在线数量
|
|
@property(nonatomic,strong) UILabel *countView;
|
|
///头像背景
|
|
@property(nonatomic,strong) UIScrollView *onlineStackView;
|
|
@property(nonatomic,strong) UIStackView *stackView;
|
|
@end
|
|
@implementation MSRoomOnLineView
|
|
|
|
-(instancetype)initWithFrame:(CGRect)frame{
|
|
self = [super initWithFrame:frame];
|
|
if(self){
|
|
[self installUI];
|
|
[self installConstraints];
|
|
}
|
|
return self;
|
|
}
|
|
-(void)installUI{
|
|
[self addSubview:self.countBgView];
|
|
|
|
[self addSubview:self.onlineStackView];
|
|
|
|
[self.countBgView addSubview:self.countIconView];
|
|
[self.countBgView addSubview:self.countView];
|
|
|
|
[self.onlineStackView addSubview:self.stackView];
|
|
}
|
|
-(void)installConstraints{
|
|
|
|
[self.countBgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.width.height.mas_equalTo(24);
|
|
make.top.equalTo(self);
|
|
make.trailing.mas_equalTo(0);
|
|
}];
|
|
|
|
[self.countIconView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.width.height.mas_equalTo(10);
|
|
make.top.mas_equalTo(2);
|
|
make.centerX.equalTo(self.countBgView);
|
|
}];
|
|
[self.countView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.equalTo(self.countIconView.mas_bottom).mas_offset(0);
|
|
make.leading.trailing.equalTo(self.countBgView).inset(2);
|
|
}];
|
|
[self.onlineStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.width.mas_equalTo(76);
|
|
make.height.mas_equalTo(24);
|
|
make.top.leading.equalTo(self);
|
|
|
|
}];
|
|
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.edges.equalTo(self.onlineStackView);
|
|
}];
|
|
for (int i = 0; i < 3; i++) {
|
|
MSRoomOnLineAvatarView *avatarView = [[MSRoomOnLineAvatarView alloc]initWithFrame:CGRectZero];
|
|
avatarView.tag = 100 + i;
|
|
[self.stackView addArrangedSubview:avatarView];
|
|
avatarView.isHiddenSubView = YES;
|
|
[avatarView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.width.height.mas_equalTo(24);
|
|
}];
|
|
|
|
}
|
|
if (isMSRTL()) {
|
|
self.onlineStackView.transform = CGAffineTransformMakeRotation(M_PI);
|
|
self.stackView.transform = CGAffineTransformMakeRotation(M_PI);
|
|
}
|
|
}
|
|
- (void)setCount:(NSString *)count{
|
|
_count = count;
|
|
_countView.text = _count;
|
|
}
|
|
- (void)setAvatarList:(NSArray *)avatarList{
|
|
_avatarList = avatarList;
|
|
if(_avatarList.count == 0)return;
|
|
MSRoomOnLineAvatarView *imageView1 = [self.stackView viewWithTag:100];
|
|
MSRoomOnLineAvatarView *imageView2 = [self.stackView viewWithTag:101];
|
|
MSRoomOnLineAvatarView *imageView3 = [self.stackView viewWithTag:102];
|
|
imageView1.isHiddenSubView = YES;
|
|
imageView2.isHiddenSubView = YES;
|
|
imageView3.isHiddenSubView = YES;
|
|
if(_avatarList.count == 1){
|
|
imageView3.isHiddenSubView = NO;
|
|
XPMessageRemoteExtModel *model3 = _avatarList[0];
|
|
imageView3.model = model3;
|
|
}else if(_avatarList.count == 2){
|
|
imageView2.isHiddenSubView = NO;
|
|
XPMessageRemoteExtModel *model2 = _avatarList[0];
|
|
imageView2.model = model2;
|
|
|
|
imageView3.isHiddenSubView = NO;
|
|
XPMessageRemoteExtModel *model3 = _avatarList[1];
|
|
imageView3.model = model3;
|
|
}else{
|
|
imageView1.isHiddenSubView = NO;
|
|
XPMessageRemoteExtModel *model1 = _avatarList[0];
|
|
imageView1.model = model1;
|
|
|
|
imageView2.isHiddenSubView = NO;
|
|
XPMessageRemoteExtModel *model2 = _avatarList[1];
|
|
imageView2.model = model2;
|
|
|
|
imageView3.isHiddenSubView = NO;
|
|
XPMessageRemoteExtModel *model3 = _avatarList[2];
|
|
imageView3.model = model3;
|
|
|
|
}
|
|
|
|
}
|
|
#pragma mark - 懒加载
|
|
- (UIView *)countBgView{
|
|
if(!_countBgView){
|
|
_countBgView = [UIView new];
|
|
_countBgView.layer.cornerRadius = 12;
|
|
_countBgView.layer.masksToBounds = YES;
|
|
_countBgView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.2];
|
|
}
|
|
return _countBgView;
|
|
}
|
|
|
|
- (UIImageView *)countIconView{
|
|
if(!_countIconView){
|
|
_countIconView = [UIImageView new];
|
|
_countIconView.image = kImage(@"ms_room_onLine_icon");
|
|
}
|
|
return _countIconView;
|
|
}
|
|
- (UILabel *)countView{
|
|
if(!_countView){
|
|
_countView = [UILabel labelInitWithText:@"0" font:[UIFont systemFontOfSize:9 weight:UIFontWeightBold] textColor:[UIColor whiteColor]];
|
|
_countView.textAlignment = NSTextAlignmentCenter;
|
|
}
|
|
return _countView;
|
|
}
|
|
- (UIScrollView *)onlineStackView {
|
|
if (!_onlineStackView) {
|
|
_onlineStackView = [[UIScrollView alloc] init];
|
|
_onlineStackView.scrollEnabled = NO;
|
|
}
|
|
return _onlineStackView;
|
|
}
|
|
- (UIStackView *)stackView {
|
|
if (!_stackView) {
|
|
_stackView = [[UIStackView alloc] init];
|
|
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
|
_stackView.distribution = UIStackViewDistributionFill;
|
|
_stackView.alignment = UIStackViewAlignmentCenter;
|
|
_stackView.spacing = 5;
|
|
}
|
|
return _stackView;
|
|
}
|
|
@end
|