头条优化

This commit is contained in:
liyuhua
2024-06-04 10:43:58 +08:00
parent 5d580ccefe
commit a78fbb9c55
9 changed files with 139 additions and 67 deletions

View File

@@ -370,7 +370,7 @@
if (iPhoneXSeries) { if (iPhoneXSeries) {
bottom = (47+kSafeAreaBottomHeight+30 + 70) * scale; bottom = (47+kSafeAreaBottomHeight+30 + 70) * scale;
} else { } else {
bottom = (47+10+70 ) * scale; bottom = (47+10+70 + 30) * scale;
} }
CGFloat width = rect.size.width * scale; CGFloat width = rect.size.width * scale;
CGFloat height = rect.size.height * scale; CGFloat height = rect.size.height * scale;

View File

@@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface MsRoomMessagChatHallHeadView : UIView @interface MsRoomMessagChatHallHeadView : UIView
@property(nonatomic,copy) NSString *content; @property(nonatomic,copy) NSString *content;
@property(nonatomic,assign) BOOL isGame;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

View File

@@ -7,7 +7,8 @@
#import "MsRoomMessagChatHallHeadView.h" #import "MsRoomMessagChatHallHeadView.h"
@interface MsRoomMessagChatHallHeadView() @interface MsRoomMessagChatHallHeadView()
@property(nonatomic,strong) UILabel *titleView; @property(nonatomic,strong) UILabel *titleView;
@property(nonatomic,strong) MarqueeLabel *marqueeView;
@property(nonatomic,strong) UIImageView *bgImageView; @property(nonatomic,strong) UIImageView *bgImageView;
@end @end
@implementation MsRoomMessagChatHallHeadView @implementation MsRoomMessagChatHallHeadView
@@ -25,6 +26,9 @@
self.layer.masksToBounds = YES; self.layer.masksToBounds = YES;
[self addSubview:self.bgImageView]; [self addSubview:self.bgImageView];
[self addSubview:self.titleView]; [self addSubview:self.titleView];
[self addSubview:self.marqueeView];
self.titleView.hidden = YES;
self.marqueeView.hidden = YES;
} }
-(void)installConstraints{ -(void)installConstraints{
@@ -34,11 +38,20 @@
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.top.bottom.equalTo(self).inset(10); make.leading.trailing.top.bottom.equalTo(self).inset(10);
}]; }];
[self.marqueeView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.titleView);
}];
} }
-(void)setContent:(NSString *)content{ -(void)setContent:(NSString *)content{
_content = content; _content = content;
_titleView.text = _content; _titleView.text = _content;
_marqueeView.text = _content;
}
- (void)setIsGame:(BOOL)isGame{
_isGame = isGame;
_titleView.numberOfLines = _isGame == YES ? 1 : 0;
_titleView.hidden = _isGame;
_marqueeView.hidden = !_isGame;
} }
- (UIImage*)resizableImage:(UIImage *)image { - (UIImage*)resizableImage:(UIImage *)image {
// //
@@ -57,6 +70,19 @@
} }
return _titleView; return _titleView;
} }
- (MarqueeLabel *)marqueeView{
if(!_marqueeView){
_marqueeView = [[MarqueeLabel alloc] init];
_marqueeView.textAlignment = NSTextAlignmentCenter;
_marqueeView.scrollDuration = 8.0;
_marqueeView.fadeLength = 6.0f;
_marqueeView.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium];
_marqueeView.textColor = UIColorFromRGB(0xFFF6E1);
_marqueeView.userInteractionEnabled = YES;
}
return _marqueeView;
}
- (UIImageView *)bgImageView{ - (UIImageView *)bgImageView{
if(!_bgImageView){ if(!_bgImageView){
_bgImageView = [UIImageView new]; _bgImageView = [UIImageView new];

View File

@@ -9,9 +9,11 @@
#import "RoomHostDelegate.h" #import "RoomHostDelegate.h"
#import "RoomGuestDelegate.h" #import "RoomGuestDelegate.h"
#import <JXCategoryView/JXCategoryListContainerView.h> #import <JXCategoryView/JXCategoryListContainerView.h>
#import "MSSessionPublicChatHallTopModel.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface MsRoomMessagChatHallView : UIView<RoomGuestDelegate,JXCategoryListContentViewDelegate> @interface MsRoomMessagChatHallView : UIView<RoomGuestDelegate,JXCategoryListContentViewDelegate>
@property(nonatomic,strong) MSSessionPublicChatHallTopModel *topModel;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate; - (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
- (void)handleNIMImageMessage:(NIMMessage *)message; - (void)handleNIMImageMessage:(NIMMessage *)message;
@end @end

View File

@@ -106,32 +106,28 @@
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addCustomMessage:) name:@"message" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addCustomMessage:) name:@"message" object:nil];
[self addSubview:self.headerView]; [self addSubview:self.headerView];
[self addSubview:self.messageTableView]; [self addSubview:self.messageTableView];
[Api getPublicChatHallTopText:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
MSSessionPublicChatHallTopModel *model = [MSSessionPublicChatHallTopModel modelWithDictionary:data.data];
if(model != nil){
self.headerView.content = model.content;
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_greaterThanOrEqualTo(0);
}];
}else{
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_equalTo(0);
}];
}
}
}];
} }
- (void)setTopModel:(MSSessionPublicChatHallTopModel *)topModel{
_topModel = topModel;
if(_topModel != nil){
self.headerView.content = _topModel.content;
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_greaterThanOrEqualTo(0);
}];
}else{
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_equalTo(0);
}];
}
}
- (void)initSubViewConstraints { - (void)initSubViewConstraints {
[self.headerView mas_makeConstraints:^(MASConstraintMaker *make) { [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15); make.leading.mas_equalTo(self).offset(15);
@@ -139,10 +135,12 @@
make.height.mas_greaterThanOrEqualTo(0); make.height.mas_greaterThanOrEqualTo(0);
}]; }];
[self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) { [self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15); make.leading.mas_equalTo(self).offset(15);
make.bottom.trailing.mas_equalTo(self); make.trailing.mas_equalTo(self);
make.top.equalTo(self.headerView.mas_bottom).mas_offset(10); make.bottom.mas_equalTo(10);
make.top.equalTo(self.headerView.mas_bottom).mas_offset(0);
}]; }];
@@ -448,6 +446,8 @@
[self.messageTableView reloadData]; [self.messageTableView reloadData];
} }
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
self.headerView.isGame = infoModel.type == RoomType_MiniGame;
} }
@@ -534,37 +534,7 @@
} }
#pragma mark - PIRoomMessageUnlockPhotoAlbumViewDelegate #pragma mark - PIRoomMessageUnlockPhotoAlbumViewDelegate
- (void)unlockRoomAlbumImageWithAlbumModel:(PIRoomPhotoAlbumItemModel *)albumModel{ - (void)unlockRoomAlbumImageWithAlbumModel:(PIRoomPhotoAlbumItemModel *)albumModel{
[XNDJTDDLoadingTool showLoading];
[Api unlockRoomAlbumPhoto:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
[XNDJTDDLoadingTool hideHUD];
if(code == 200){
NSMutableDictionary *getData = [NSMutableDictionary dictionary];
[getData addEntriesFromDictionary:data.data];
AttachmentModel *attachment = [[AttachmentModel alloc] init];
attachment.first = CustomMessageType_Gift;
attachment.second = Custom_Message_Sub_Gift_Send;
NSDictionary *targetUsers = ((NSArray *)[getData objectForKey:@"targetUsers"]).firstObject;
[getData setObject:[targetUsers valueForKeyPath:@"uid"] forKey:@"targetUid"];
[getData setObject:[targetUsers valueForKeyPath:@"nick"] forKey:@"targetNick"];
[getData setObject:[targetUsers valueForKeyPath:@"avatar"] forKey:@"targetAvatar"];
[getData setObject:@(YES) forKey:@"isRoomAlbum"];
attachment.data = getData;
[self sendCustomMessage:attachment];
if(albumModel.ID != nil){
if(![[XPSkillCardPlayerManager shareInstance].photoIdList containsObject:albumModel.ID]){
if([XPSkillCardPlayerManager shareInstance].photoIdList == nil){
[XPSkillCardPlayerManager shareInstance].photoIdList = [NSMutableArray arrayWithArray:@[albumModel.ID]];
}else{
[[XPSkillCardPlayerManager shareInstance].photoIdList addObject:albumModel.ID];
}
}
[[NSNotificationCenter defaultCenter]postNotificationName:@"kGetgetUnlockRoomAlbumPhotoListNot" object:nil];
}
return;
}
[XNDJTDDLoadingTool showErrorWithMessage:msg];
} id:albumModel.ID roomUid:@(self.hostDelegate.getRoomInfo.uid).stringValue];
} }
- (void)sendCustomMessage:(AttachmentModel *)attachment { - (void)sendCustomMessage:(AttachmentModel *)attachment {
@@ -623,6 +593,8 @@
- (MsRoomMessagChatHallHeadView *)headerView { - (MsRoomMessagChatHallHeadView *)headerView {
if (!_headerView) { if (!_headerView) {
_headerView = [[MsRoomMessagChatHallHeadView alloc] initWithFrame:CGRectZero]; _headerView = [[MsRoomMessagChatHallHeadView alloc] initWithFrame:CGRectZero];
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
_headerView.isGame = infoModel.type == RoomType_MiniGame;
} }
return _headerView; return _headerView;
} }

View File

@@ -13,6 +13,8 @@
#import "ClientConfig.h" #import "ClientConfig.h"
#import "UserInfoModel.h" #import "UserInfoModel.h"
#import <NIMSDK/NIMSDK.h> #import <NIMSDK/NIMSDK.h>
#import "Api+Message.h"
#import "MSSessionPublicChatHallTopModel.h"
@interface MsRoomMessageMainView()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate> @interface MsRoomMessageMainView()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate>
/// ///
@property (nonatomic, strong) NSArray<NSString *> *titles; @property (nonatomic, strong) NSArray<NSString *> *titles;
@@ -41,6 +43,14 @@
-(void)installUI{ -(void)installUI{
[self addSubview:self.titleView]; [self addSubview:self.titleView];
[self addSubview:self.pi_containerView]; [self addSubview:self.pi_containerView];
[Api getPublicChatHallTopText:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
MSSessionPublicChatHallTopModel *model = [MSSessionPublicChatHallTopModel modelWithDictionary:data.data];
self.chatHallView.topModel = model;
self.roomView.topModel = model;
}
}];
} }
-(void)installConstraints{ -(void)installConstraints{
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {

View File

@@ -9,9 +9,11 @@
#import "RoomHostDelegate.h" #import "RoomHostDelegate.h"
#import "RoomGuestDelegate.h" #import "RoomGuestDelegate.h"
#import <JXCategoryView/JXCategoryListContainerView.h> #import <JXCategoryView/JXCategoryListContainerView.h>
#import "MSSessionPublicChatHallTopModel.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface XPRoomMessageContainerView : UIView<RoomGuestDelegate,JXCategoryListContentViewDelegate> @interface XPRoomMessageContainerView : UIView<RoomGuestDelegate,JXCategoryListContentViewDelegate>
@property(nonatomic,strong) MSSessionPublicChatHallTopModel *topModel;
- (void)showUserCard:(NSInteger)uid; - (void)showUserCard:(NSInteger)uid;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate; - (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;

View File

@@ -35,6 +35,7 @@
#import "XPMessageInfoModel.h" #import "XPMessageInfoModel.h"
#import "GiftReceiveInfoModel.h" #import "GiftReceiveInfoModel.h"
#import "XPGiftStorage.h" #import "XPGiftStorage.h"
#import "MsRoomMessagChatHallHeadView.h"
///View ///View
#import "XPRoomMessageTableViewCell.h" #import "XPRoomMessageTableViewCell.h"
#import "XPRoomMessageHeaderView.h" #import "XPRoomMessageHeaderView.h"
@@ -50,7 +51,8 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
@interface XPRoomMessageContainerView ()<UITableViewDelegate, UITableViewDataSource, XPRoomMessageTableViewCellDelegate, UIGestureRecognizerDelegate,PIRoomMessagePhotoAlbumCellDelegate,SDPhotoBrowserDelegate,PIRoomMessageUnlockPhotoAlbumViewDelegate> @interface XPRoomMessageContainerView ()<UITableViewDelegate, UITableViewDataSource, XPRoomMessageTableViewCellDelegate, UIGestureRecognizerDelegate,PIRoomMessagePhotoAlbumCellDelegate,SDPhotoBrowserDelegate,PIRoomMessageUnlockPhotoAlbumViewDelegate>
/// ///
@property (nonatomic,weak) id<RoomHostDelegate> hostDelegate; @property (nonatomic,weak) id<RoomHostDelegate> hostDelegate;
///
@property (nonatomic,strong) MsRoomMessagChatHallHeadView *headlineView;
/// ///
@property (nonatomic,strong) UITableView *messageTableView; @property (nonatomic,strong) UITableView *messageTableView;
/// ///
@@ -247,6 +249,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
#pragma mark - Private Method #pragma mark - Private Method
- (void)initSubViews { - (void)initSubViews {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addCustomMessage:) name:@"message" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addCustomMessage:) name:@"message" object:nil];
[self addSubview:self.headlineView];
[self addSubview:self.messageTableView]; [self addSubview:self.messageTableView];
[self addSubview:self.messageTipsBtn]; [self addSubview:self.messageTipsBtn];
[self addSubview:self.atTipBtn]; [self addSubview:self.atTipBtn];
@@ -254,10 +257,16 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
} }
- (void)initSubViewConstraints { - (void)initSubViewConstraints {
[self.headlineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_greaterThanOrEqualTo(0);
}];
[self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) { [self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15); make.leading.mas_equalTo(self).offset(15);
make.bottom.trailing.mas_equalTo(self); make.bottom.trailing.mas_equalTo(self);
make.top.mas_equalTo(self); make.top.equalTo(self.headlineView.mas_bottom).mas_offset(0);
}]; }];
[self.messageTipsBtn mas_makeConstraints:^(MASConstraintMaker *make) { [self.messageTipsBtn mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -273,7 +282,27 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
make.leading.mas_equalTo(self); make.leading.mas_equalTo(self);
}]; }];
} }
- (void)setTopModel:(MSSessionPublicChatHallTopModel *)topModel{
_topModel = topModel;
if(_topModel != nil){
self.headlineView.content = _topModel.content;
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_greaterThanOrEqualTo(0);
}];
}else{
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_equalTo(0);
}];
}
}
/// ///
- (BOOL)isCurrentRoom:(NSString *)sessionId { - (BOOL)isCurrentRoom:(NSString *)sessionId {
if ([sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]]) { if ([sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]]) {
@@ -412,6 +441,27 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
if (giftInfo.giftType == GiftType_super){ if (giftInfo.giftType == GiftType_super){
return NO; return NO;
} }
}else if(attachment.first == CustomMessageType_Chat_Hall_Headlinesn && attachment.second == Custom_Message_Sub_Chat_Hall_Headlinesn){
MSSessionPublicChatHallTopModel *topModel = [MSSessionPublicChatHallTopModel modelWithDictionary:attachment.data];
if(topModel.recordStatus == 1){
self.headlineView.content = topModel.content;
[self.headlineView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_equalTo(0);
}];
}else{
self.headlineView.content = topModel.content;
[self.headlineView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.top.trailing.mas_equalTo(self);
make.height.mas_greaterThanOrEqualTo(0);
}];
}
} }
@@ -913,6 +963,8 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
self.headerView.bubbleColor = self.hostDelegate.getRoomInfo.type == RoomType_MiniGame ? [UIColor colorWithWhite:1 alpha:0.2] : [UIColor colorWithWhite:1 alpha:0.3]; self.headerView.bubbleColor = self.hostDelegate.getRoomInfo.type == RoomType_MiniGame ? [UIColor colorWithWhite:1 alpha:0.2] : [UIColor colorWithWhite:1 alpha:0.3];
[self.messageTableView reloadData]; [self.messageTableView reloadData];
} }
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
self.headlineView.isGame = infoModel.type == RoomType_MiniGame;
} }
#pragma mark - ScrollViewDelegate #pragma mark - ScrollViewDelegate
@@ -1185,5 +1237,13 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
} }
return _messageParser; return _messageParser;
} }
- (MsRoomMessagChatHallHeadView *)headlineView {
if (!_headlineView) {
_headlineView = [[MsRoomMessagChatHallHeadView alloc] initWithFrame:CGRectZero];
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
_headlineView.isGame = infoModel.type == RoomType_MiniGame;
}
return _headlineView;
}
@end @end

View File

@@ -644,9 +644,9 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
}]; }];
CGFloat height = 70; CGFloat height = 70;
if (iPhoneXSeries) { if (iPhoneXSeries) {
height = 70; height = 100;
} else { } else {
height = 50; height = 80;
} }
[self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { [self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height); make.height.mas_equalTo(height);