头条优化

This commit is contained in:
liyuhua
2024-06-04 14:54:51 +08:00
committed by eggmanQQQ
parent 5cb44c5e72
commit c694c2ca66
11 changed files with 115 additions and 80 deletions

View File

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

View File

@@ -8,7 +8,6 @@
#import "MsRoomMessagChatHallHeadView.h"
@interface MsRoomMessagChatHallHeadView()
@property(nonatomic,strong) UILabel *titleView;
@property(nonatomic,strong) MarqueeLabel *marqueeView;
@property(nonatomic,strong) UIImageView *bgImageView;
@end
@implementation MsRoomMessagChatHallHeadView
@@ -26,9 +25,8 @@
self.layer.masksToBounds = YES;
[self addSubview:self.bgImageView];
[self addSubview:self.titleView];
[self addSubview:self.marqueeView];
self.titleView.hidden = YES;
self.marqueeView.hidden = YES;
}
-(void)installConstraints{
@@ -38,20 +36,14 @@
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.top.bottom.equalTo(self).inset(10);
}];
[self.marqueeView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.titleView);
}];
}
-(void)setContent:(NSString *)content{
_content = 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 {
//
@@ -70,19 +62,7 @@
}
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{
if(!_bgImageView){
_bgImageView = [UIImageView new];

View File

@@ -11,8 +11,14 @@
#import <JXCategoryView/JXCategoryListContainerView.h>
#import "MSSessionPublicChatHallTopModel.h"
NS_ASSUME_NONNULL_BEGIN
@class MsRoomMessagChatHallView;
@protocol MsRoomMessagChatHallViewDelegate <NSObject>
- (void)msRoomMessagChatHallViewDidTapEmpty:(MsRoomMessagChatHallView *)view;
@end
@interface MsRoomMessagChatHallView : UIView<RoomGuestDelegate,JXCategoryListContentViewDelegate>
@property(nonatomic,weak) id<MsRoomMessagChatHallViewDelegate>delegate;
@property(nonatomic,strong) MSSessionPublicChatHallTopModel * __nullable topModel;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
- (void)handleNIMImageMessage:(NIMMessage *)message;

View File

@@ -48,7 +48,7 @@
#import "MsRoomMessagChatHallCell.h"
#import "MSSessionPublicChatHallTopModel.h"
#import "MsRoomMessagChatHallHeadView.h"
@interface MsRoomMessagChatHallView ()<UITableViewDelegate, UITableViewDataSource, XPRoomMessageTableViewCellDelegate, UIGestureRecognizerDelegate,PIRoomMessagePhotoAlbumCellDelegate,SDPhotoBrowserDelegate,PIRoomMessageUnlockPhotoAlbumViewDelegate>
@interface MsRoomMessagChatHallView ()<UITableViewDelegate, UITableViewDataSource, XPRoomMessageTableViewCellDelegate, UIGestureRecognizerDelegate,PIRoomMessagePhotoAlbumCellDelegate,SDPhotoBrowserDelegate,PIRoomMessageUnlockPhotoAlbumViewDelegate,MsRoomMessagChatHallCellDelegate>
///
@property (nonatomic,weak) id<RoomHostDelegate> hostDelegate;
@@ -135,13 +135,12 @@
make.height.mas_greaterThanOrEqualTo(0);
}];
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
CGFloat top = infoModel.type == RoomType_MiniGame ? 0 : 10;
[self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.trailing.mas_equalTo(self);
make.bottom.mas_equalTo(10);
make.top.equalTo(self.headerView.mas_bottom).mas_offset(top);
make.top.equalTo(self.headerView.mas_bottom).mas_offset(10);
}];
@@ -431,13 +430,7 @@
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
self.headerView.isGame = infoModel.type == RoomType_MiniGame;
CGFloat top = infoModel.type == RoomType_MiniGame ? 0 : 10;
[self.messageTableView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self).offset(15);
make.trailing.mas_equalTo(self);
make.bottom.mas_equalTo(10);
make.top.equalTo(self.headerView.mas_bottom).mas_offset(top);
}];
}
@@ -471,6 +464,7 @@
}else if (attr.first == CustomMessageType_Chat_Hall_Headlinesn){
MsRoomMessagChatHallCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([MsRoomMessagChatHallCell class]) forIndexPath:indexPath];
cell.model = attr;
cell.delegate = self;
return cell;
}
XPRoomMessageTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomMessageTableViewCell class])];
@@ -481,26 +475,27 @@
}
#pragma mark - MsRoomMessagChatHallCellDelegate
- (void)msRoomMessagChatHallCellDidTapEmpty:(MsRoomMessagChatHallCell *)cell{
if(self.delegate && [self.delegate respondsToSelector:@selector(msRoomMessagChatHallViewDidTapEmpty:)]){
[self.delegate msRoomMessagChatHallViewDidTapEmpty:self];
}
}
#pragma mark - XPRoomMessageTableViewCellDelegate
- (void)xPRoomMessageTableViewCellDidTapEmpty:(XPRoomMessageTableViewCell *)view {
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
self.isLarge = !self.isLarge;
CGFloat height = self.isLarge ? 200 : 80;
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
}];
if(self.delegate && [self.delegate respondsToSelector:@selector(msRoomMessagChatHallViewDidTapEmpty:)]){
[self.delegate msRoomMessagChatHallViewDidTapEmpty:self];
}
}
#pragma mark - PIRoomMessagePhotoAlbumCell
- (void)pIRoomMessagePhotoAlbumCellDelegateDidTapEmpty:(PIRoomMessagePhotoAlbumCell *)view{
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
self.isLarge = !self.isLarge;
CGFloat height = self.isLarge ? 200 : 80;
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
}];
if(self.delegate && [self.delegate respondsToSelector:@selector(msRoomMessagChatHallViewDidTapEmpty:)]){
[self.delegate msRoomMessagChatHallViewDidTapEmpty:self];
}
}
-(void)clickDidTapEmptyAction{
if(self.delegate && [self.delegate respondsToSelector:@selector(msRoomMessagChatHallViewDidTapEmpty:)]){
[self.delegate msRoomMessagChatHallViewDidTapEmpty:self];
}
}
-(void)unlockAlbumHandleWithInfo:(PIRoomPhotoAlbumItemModel *_Nonnull)info{
@@ -585,6 +580,8 @@
_headerView = [[MsRoomMessagChatHallHeadView alloc] initWithFrame:CGRectZero];
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
_headerView.isGame = infoModel.type == RoomType_MiniGame;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickDidTapEmptyAction)];
[_headerView addGestureRecognizer:tap];
}
return _headerView;
}

View File

@@ -16,7 +16,8 @@
#import "Api+Message.h"
#import "MSSessionPublicChatHallTopModel.h"
#import "AttachmentModel.h"
@interface MsRoomMessageMainView()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate>
#import "RoomInfoModel.h"
@interface MsRoomMessageMainView()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate,XPRoomMessageContainerViewDelegate,MsRoomMessagChatHallViewDelegate>
///
@property (nonatomic, strong) NSArray<NSString *> *titles;
///
@@ -27,6 +28,8 @@
@property(nonatomic,strong) MsRoomMessagChatHallView *chatHallView;
///
@property (nonatomic,weak) id<RoomHostDelegate> hostDelegate;
///
@property (nonatomic,assign) BOOL isLarge;
@end
@implementation MsRoomMessageMainView
@@ -158,7 +161,26 @@
[self.roomView onRoomUpdate];
[self.chatHallView onRoomUpdate];
}
#pragma mark - XPRoomMessageContainerViewDelegate
- (void)xPRoomMessageContainerViewlDidTapEmpty:(XPRoomMessageContainerView *)view{
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
self.isLarge = !self.isLarge;
CGFloat height = self.isLarge ? 200 : (iPhoneXSeries ? 100 : 80);
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
}];
}
}
#pragma mark - MsRoomMessagChatHallViewDelegate
- (void)msRoomMessagChatHallViewDidTapEmpty:(MsRoomMessagChatHallView *)view{
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
self.isLarge = !self.isLarge;
CGFloat height = self.isLarge ? 200 : (iPhoneXSeries ? 100 : 80);
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
}];
}
}
#pragma mark -
- (NSInteger)type{
return self.titleView.selectedIndex;
@@ -209,12 +231,14 @@
- (XPRoomMessageContainerView *)roomView{
if(!_roomView){
_roomView = [[XPRoomMessageContainerView alloc] initWithDelegate:self.hostDelegate];
_roomView.delegate = self;
}
return _roomView;
}
- (MsRoomMessagChatHallView *)chatHallView{
if(!_chatHallView){
_chatHallView = [[MsRoomMessagChatHallView alloc]initWithDelegate:self.hostDelegate];
_chatHallView.delegate = self;
}
return _chatHallView;
}

View File

@@ -8,9 +8,15 @@
#import <UIKit/UIKit.h>
#import "XPMessageInfoModel.h"
NS_ASSUME_NONNULL_BEGIN
@class MsRoomMessagChatHallCell;
@protocol MsRoomMessagChatHallCellDelegate <NSObject>
- (void)msRoomMessagChatHallCellDidTapEmpty:(MsRoomMessagChatHallCell *)cell;
@end
@interface MsRoomMessagChatHallCell : UITableViewCell
@property(nonatomic,strong) XPMessageInfoModel *model;
@property(nonatomic,weak) id<MsRoomMessagChatHallCellDelegate>delegate;
@end
NS_ASSUME_NONNULL_END

View File

@@ -24,6 +24,13 @@
self.contentView.backgroundColor = [UIColor clearColor];
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self.contentView addSubview:self.textView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(didTapEmptyAction)];
[self.contentView addGestureRecognizer:tap];
}
-(void)didTapEmptyAction{
if(self.delegate && [self.delegate respondsToSelector:@selector(msRoomMessagChatHallCellDidTapEmpty:)]){
[self.delegate msRoomMessagChatHallCellDidTapEmpty:self];
}
}
-(void)installConstraints{
[self.textView mas_makeConstraints:^(MASConstraintMaker *make) {

View File

@@ -19,6 +19,7 @@
#import "XPRoomMessageConstant.h"
@interface XPRoomMessageTableViewCell ()<UIGestureRecognizerDelegate>
@property(nonatomic,strong) UIButton *clickBtn;
///
@property (nonatomic,strong) NetImageView *bubbleImageView;
///
@@ -47,6 +48,7 @@
tap.delegate = self;
self.tapEmptyRecognizer = tap;
[self.contentView addGestureRecognizer:self.tapEmptyRecognizer];
}
- (void)initSubViewConstraints {
@@ -92,7 +94,9 @@
[self.delegate xPRoomMessageTableViewCellDidTapEmpty:self];
}
}
-(void)clickBtnAction{
}
#pragma mark - Getters And Setters
- (void)setMessageInfo:(XPMessageInfoModel *)messageInfo {
_messageInfo = messageInfo;
@@ -166,5 +170,11 @@
return _contentLabel;
}
- (UIButton *)clickBtn{
if(!_clickBtn){
_clickBtn = [UIButton new];
[_clickBtn addTarget:self action:@selector(clickBtnAction) forControlEvents:UIControlEventTouchUpInside];
}
return _clickBtn;
}
@end

View File

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

View File

@@ -75,8 +75,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
@property (nonatomic, strong) NSMutableArray *locationArray;
///messageView TODO:
@property (nonatomic,strong) XPRoomMessageParser *messageParser;
///
@property (nonatomic,assign) BOOL isLarge;
@property(nonatomic,strong) PIRoomPhotoAlbumItemModel *lookUpModel;
@property(nonatomic,assign) BOOL isLoadHistoryMessage;
@end
@@ -1026,30 +1025,27 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
XPRoomMessageTableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@",cell.contentView.subviews);
NSLog(@"%@",cell.contentView.subviews);
}
#pragma mark - XPRoomMessageTableViewCellDelegate
- (void)xPRoomMessageTableViewCellDidTapEmpty:(XPRoomMessageTableViewCell *)view {
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
self.isLarge = !self.isLarge;
CGFloat height = self.isLarge ? 200 : 80;
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
}];
}
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMessageContainerViewlDidTapEmpty:)]) {
[self.delegate xPRoomMessageContainerViewlDidTapEmpty:self];
}
}
-(void)clickDidTapEmptyAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMessageContainerViewlDidTapEmpty:)]) {
[self.delegate xPRoomMessageContainerViewlDidTapEmpty:self];
}
}
#pragma mark - PIRoomMessagePhotoAlbumCell
- (void)pIRoomMessagePhotoAlbumCellDelegateDidTapEmpty:(PIRoomMessagePhotoAlbumCell *)view{
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
self.isLarge = !self.isLarge;
CGFloat height = self.isLarge ? 200 : 80;
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
}];
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMessageContainerViewlDidTapEmpty:)]) {
[self.delegate xPRoomMessageContainerViewlDidTapEmpty:self];
}
}
-(void)unlockAlbumHandleWithInfo:(PIRoomPhotoAlbumItemModel *_Nonnull)info{
@@ -1227,6 +1223,9 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
_headlineView = [[MsRoomMessagChatHallHeadView alloc] initWithFrame:CGRectZero];
RoomInfoModel *infoModel = self.hostDelegate.getRoomInfo;
_headlineView.isGame = infoModel.type == RoomType_MiniGame;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickDidTapEmptyAction)];
[_headlineView addGestureRecognizer:tap];
}
return _headlineView;
}

View File

@@ -459,7 +459,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
}
[self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.menuContainerView.mas_top);
make.height.mas_equalTo(quickMsgHeight);
make.height.mas_equalTo(0);
make.leading.trailing.mas_equalTo(self.view);
}];
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -510,7 +510,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
make.trailing.equalTo(self.activityContainerView.mas_leading).offset(-10);
}];
[self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(30);
make.height.mas_equalTo(0);
make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight);
make.leading.equalTo(self.anchorScrollView.middleImageView);
make.trailing.equalTo(self.activityContainerView.mas_leading).offset(-10);
@@ -642,11 +642,9 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
make.top.mas_equalTo(self.roomHeaderView.mas_bottom).offset(26 + 4);
make.height.mas_equalTo(self.stageView.hightForStageView);
}];
CGFloat height = 70;
CGFloat height = 80;
if (iPhoneXSeries) {
height = 100;
} else {
height = 80;
}
[self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(height);
@@ -731,7 +729,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
}
self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate;
[self.quickMessageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(quickMsgHeight);
make.height.mas_equalTo(0);
make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight);
make.leading.trailing.mas_equalTo(self.anchorScrollView.middleImageView);
}];