258 lines
8.1 KiB
Objective-C
258 lines
8.1 KiB
Objective-C
//
|
|
// SessionNavView.m
|
|
// YUMI
|
|
//
|
|
// Created by YUMI on 2022/4/25.
|
|
//
|
|
|
|
#import "SessionNavView.h"
|
|
///Third
|
|
#import <Masonry/Masonry.h>
|
|
#import <NIMSDK/NIMSDK.h>
|
|
///Tool
|
|
#import "DJDKMIMOMColor.h"
|
|
#import "YUMIMacroUitls.h"
|
|
#import "YUMIConstant.h"
|
|
#import "UIImage+Utils.h"
|
|
#import "SessionNavLiveView.h"
|
|
#import "NIMMessageUtils.h"
|
|
///Model
|
|
#import "UserInfoModel.h"
|
|
|
|
@interface SessionNavView ()
|
|
|
|
///返回按钮
|
|
@property (nonatomic,strong) UIButton *backButton;
|
|
///用户信息的容器
|
|
@property (nonatomic,strong) UIStackView *infoStackView;
|
|
///标题
|
|
@property (nonatomic,strong) UILabel *nickLabel;
|
|
///拉黑 和 直播中的
|
|
@property (nonatomic,strong) UIStackView *stackView;
|
|
///加入黑名单
|
|
@property (nonatomic,strong) UILabel *subTitleLabel;
|
|
///直播中
|
|
@property (nonatomic,strong) SessionNavLiveView *liveView;
|
|
///是否关注
|
|
@property (nonatomic,strong) UIButton *likeButton;
|
|
///举报
|
|
@property (nonatomic,strong) UIButton *reportButton;
|
|
|
|
@property (nonatomic,copy) NSString *userId;
|
|
|
|
@end
|
|
|
|
@implementation SessionNavView
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
self = [super initWithFrame:frame];
|
|
if (self) {
|
|
[self initSubViews];
|
|
[self initSubViewConstraints];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
#pragma mark - Private Method
|
|
- (void)initSubViews {
|
|
self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor];
|
|
[self addSubview:self.backButton];
|
|
[self addSubview:self.infoStackView];
|
|
[self addSubview:self.reportButton];
|
|
[self addSubview:self.likeButton];
|
|
|
|
[self.infoStackView addArrangedSubview:self.nickLabel];
|
|
[self.infoStackView addArrangedSubview:self.stackView];
|
|
|
|
[self.stackView addArrangedSubview:self.subTitleLabel];
|
|
[self.stackView addArrangedSubview:self.liveView];
|
|
}
|
|
|
|
- (void)initSubViewConstraints {
|
|
[self.backButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.size.mas_equalTo(CGSizeMake(22, 22));
|
|
make.leading.mas_equalTo(self).offset(8);
|
|
make.top.mas_equalTo(statusbarHeight + 14);
|
|
}];
|
|
|
|
[self.infoStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.centerX.mas_equalTo(self);
|
|
make.centerY.mas_equalTo(self.backButton);
|
|
}];
|
|
|
|
[self.likeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.centerY.mas_equalTo(self.reportButton);
|
|
make.trailing.mas_equalTo(self.reportButton.mas_leading).offset(-12);
|
|
make.size.mas_equalTo(CGSizeMake(48, 20));
|
|
}];
|
|
|
|
[self.reportButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.size.mas_equalTo(CGSizeMake(30, 30));
|
|
make.trailing.mas_equalTo(self).offset(-15);
|
|
make.centerY.mas_equalTo(self.backButton);
|
|
}];
|
|
}
|
|
|
|
#pragma mark - Event Response
|
|
- (void)reportButtonAction:(UIButton *)sender {
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didClickReport:)]) {
|
|
[self.delegate sessionNavView:self didClickReport:sender];
|
|
}
|
|
}
|
|
|
|
- (void)backButtonAction:(UIButton *)sender {
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didClickBack:)]) {
|
|
[self.delegate sessionNavView:self didClickBack:sender];
|
|
}
|
|
}
|
|
|
|
- (void)likeButtonAction:(UIButton *)sender {
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didClickLike:)]) {
|
|
[self.delegate sessionNavView:self didClickLike:sender];
|
|
}
|
|
}
|
|
|
|
- (void)liveViewRecognizer {
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didRoomLive:)]) {
|
|
[self.delegate sessionNavView:self didRoomLive:self.userInfo.roomUid];
|
|
}
|
|
}
|
|
|
|
#pragma mark - Getters And Setters
|
|
- (void)setUserInfo:(UserInfoModel *)userInfo {
|
|
_userInfo = userInfo;
|
|
if (_userInfo) {
|
|
NSString * userId = [NSString stringWithFormat:@"%ld", userInfo.uid];
|
|
self.userId = userId;
|
|
if (userInfo.nick.length > 0) {
|
|
self.title = userInfo.nick;
|
|
} else {
|
|
[[NIMSDK sharedSDK].userManager fetchUserInfos:@[userId] completion:^(NSArray<NIMUser *> * _Nullable users, NSError * _Nullable error) {
|
|
if (!error) {
|
|
self.title = users[0].userInfo.nickName;
|
|
}
|
|
}];
|
|
}
|
|
self.subTitleLabel.hidden = ![[NIMSDK sharedSDK].userManager isUserInBlackList:userId];
|
|
self.liveView.hidden = ([[NIMSDK sharedSDK].userManager isUserInBlackList:userId] || _userInfo.roomUid.length <= 0);
|
|
self.reportButton.hidden = [NIMMessageUtils isOfficalAccount:self.userId] || self.isInRoom;
|
|
}
|
|
}
|
|
|
|
- (void)setTitle:(NSString *)title {
|
|
_title = title;
|
|
if (_title) {
|
|
NSString * nick = title;
|
|
if (nick.length > 10 ) {
|
|
nick = [nick substringToIndex:10];
|
|
}
|
|
self.nickLabel.text = nick;
|
|
}
|
|
}
|
|
|
|
- (void)setIsLike:(BOOL)isLike {
|
|
_isLike = isLike;
|
|
self.likeButton.hidden = _isLike;
|
|
}
|
|
|
|
- (void)setIsInRoom:(BOOL)isInRoom {
|
|
_isInRoom = isInRoom;
|
|
self.reportButton.hidden = _isInRoom;
|
|
self.liveView.hidden = YES;
|
|
if (_isInRoom) {
|
|
[self.backButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self).offset(11);
|
|
}];
|
|
}
|
|
}
|
|
|
|
- (UIButton *)backButton {
|
|
if (!_backButton) {
|
|
_backButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal];
|
|
[_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected];
|
|
[_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _backButton;
|
|
}
|
|
|
|
- (UIStackView *)infoStackView {
|
|
if (!_infoStackView) {
|
|
_infoStackView = [[UIStackView alloc] init];
|
|
_infoStackView.axis = UILayoutConstraintAxisVertical;
|
|
_infoStackView.distribution = UIStackViewDistributionFill;
|
|
_infoStackView.alignment = UIStackViewAlignmentCenter;
|
|
_infoStackView.spacing = 1;
|
|
}
|
|
return _infoStackView;
|
|
}
|
|
|
|
- (UIStackView *)stackView {
|
|
if (!_stackView) {
|
|
_stackView = [[UIStackView alloc] init];
|
|
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
|
_stackView.distribution = UIStackViewDistributionFill;
|
|
_stackView.alignment = UIStackViewAlignmentFill;
|
|
_stackView.spacing = 0;
|
|
}
|
|
return _stackView;
|
|
}
|
|
|
|
- (SessionNavLiveView *)liveView {
|
|
if (!_liveView) {
|
|
_liveView = [[SessionNavLiveView alloc] init];
|
|
_liveView.hidden = YES;
|
|
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(liveViewRecognizer)];
|
|
[_liveView addGestureRecognizer:tap];
|
|
}
|
|
return _liveView;
|
|
}
|
|
|
|
- (UILabel *)nickLabel {
|
|
if (!_nickLabel) {
|
|
_nickLabel = [[UILabel alloc] init];
|
|
_nickLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
|
|
_nickLabel.textColor = [DJDKMIMOMColor mainTextColor];
|
|
_nickLabel.textAlignment = NSTextAlignmentCenter;
|
|
}
|
|
return _nickLabel;
|
|
}
|
|
|
|
- (UIButton *)likeButton {
|
|
if (!_likeButton) {
|
|
_likeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_likeButton setTitle:YMLocalizedString(@"SessionNavView0") forState:UIControlStateNormal];
|
|
[_likeButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal];
|
|
_likeButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
|
[_likeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
|
|
_likeButton.layer.masksToBounds = YES;
|
|
_likeButton.layer.cornerRadius = 10;
|
|
[_likeButton addTarget:self action:@selector(likeButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _likeButton;
|
|
}
|
|
|
|
- (UILabel *)subTitleLabel {
|
|
if (!_subTitleLabel) {
|
|
_subTitleLabel = [[UILabel alloc] init];
|
|
_subTitleLabel.font = [UIFont systemFontOfSize:11];
|
|
_subTitleLabel.textColor = [DJDKMIMOMColor secondTextColor];
|
|
_subTitleLabel.text = YMLocalizedString(@"SessionNavView1");
|
|
_subTitleLabel.hidden = YES;
|
|
_subTitleLabel.textAlignment = NSTextAlignmentCenter;
|
|
}
|
|
return _subTitleLabel;
|
|
}
|
|
|
|
- (UIButton *)reportButton {
|
|
if (!_reportButton) {
|
|
_reportButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_reportButton setImage:[UIImage imageNamed:@"message_session_nav_report"] forState:UIControlStateNormal];
|
|
[_reportButton setImage:[UIImage imageNamed:@"message_session_nav_report"] forState:UIControlStateSelected];
|
|
[_reportButton addTarget:self action:@selector(reportButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _reportButton;
|
|
}
|
|
|
|
|
|
@end
|