完成
This commit is contained in:
@@ -29,9 +29,12 @@
|
||||
#import <ImSDK_Plus/ImSDK_Plus.h>
|
||||
#import "QXMessageServices.h"
|
||||
|
||||
#import "QXMeetActivityDriftView.h" // 巡乐会
|
||||
|
||||
@interface QXTabbarController ()<UITabBarControllerDelegate,QXTabBarDelegate,UINavigationControllerDelegate,MQTTClientModelDelegate,V2TIMConversationListener>
|
||||
@property(nonatomic,strong) QXTabBar *customTabBar;
|
||||
@property(nonatomic,strong) QXHomeViewController *homeVC;
|
||||
@property(nonatomic,strong) QXMeetActivityDriftView *meetView;
|
||||
@property(nonatomic,assign) BOOL isAlreadyShowChirld;
|
||||
@end
|
||||
|
||||
@@ -254,11 +257,18 @@
|
||||
}
|
||||
|
||||
-(void)socketManager:(NSString *)socketManager receivedMessage:(NSDictionary *)message topic:(NSString *)topic{
|
||||
QXGiftScrollModel *model = [QXGiftScrollModel yy_modelWithJSON:message[@"msg"][@"list"]];
|
||||
[self.homeVC giftScrollViewShowWithModel:model];
|
||||
[[QXGiftDriftView shareView] addGiftModel:model];
|
||||
if ([topic isEqualToString:qx_room_topic]) {
|
||||
QXGiftScrollModel *model = [QXGiftScrollModel yy_modelWithJSON:message[@"msg"][@"list"]];
|
||||
[self.homeVC giftScrollViewShowWithModel:model];
|
||||
[[QXGiftDriftView shareView] addGiftModel:model];
|
||||
}else if([topic isEqualToString:qx_ac_topic]){
|
||||
QXMeetActivityDriftModel *model = [QXMeetActivityDriftModel yy_modelWithJSON:message[@"msg"]];
|
||||
[[QXMeetActivityDriftView shareView] addActivityModel:model];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
|
||||
// NSInteger index = [self.viewControllers indexOfObject:viewController];
|
||||
// if (index == 4) {
|
||||
|
||||
@@ -34,6 +34,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (weak, nonatomic) IBOutlet UIView *numberBgView;
|
||||
@property (weak, nonatomic) IBOutlet UIImageView *grayCoverView;
|
||||
@property (weak, nonatomic) IBOutlet UIImageView *giftNumBgImageView;
|
||||
@property (weak, nonatomic) IBOutlet UIImageView *activityImageView;
|
||||
|
||||
@property (strong, nonatomic) QXGiftModel *roomGiftModel;
|
||||
@property (strong, nonatomic) QXUserGiftWallModel *giftWall;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageWithColor:RGB16(0xEFF2F8)] forState:(UIControlStateNormal)];
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageNamed:@"mine_dress_bg"] forState:(UIControlStateSelected)];
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageNamed:@"room_sound_sel"] forState:(UIControlStateSelected)];
|
||||
self.giftNumBgImageView.image = [[UIImage imageNamed:@"gift_number_bg"] imageByTintColor:QXConfig.themeColor];
|
||||
}
|
||||
|
||||
@@ -26,7 +26,10 @@
|
||||
self.cornHeight.constant = 10;
|
||||
self.nameLabelHeight.constant = 10;
|
||||
self.giftNameLabel.font = [UIFont systemFontOfSize:8];
|
||||
self.giftNameLabel.textColor = RGB16(0xffffff);
|
||||
self.cornBtn.titleLabel.font = [UIFont systemFontOfSize:8];
|
||||
[self.cornBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
||||
self.giftNameLabel.textColor = RGB16(0x333333);
|
||||
self.userHeaderView.hidden = YES;
|
||||
}
|
||||
break;
|
||||
@@ -39,6 +42,8 @@
|
||||
self.numberLabel.font = [UIFont systemFontOfSize:10];
|
||||
self.cornBtn.titleLabel.font = [UIFont systemFontOfSize:14];
|
||||
self.selecteBtn.selected = YES;
|
||||
[self.cornBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
||||
self.giftNameLabel.textColor = RGB16(0x333333);
|
||||
[self.cornBtn setImage:[UIImage imageNamed:@"mine_live_gift_corn"] forState:(UIControlStateNormal)];
|
||||
self.userHeaderView.hidden = YES;
|
||||
}
|
||||
@@ -48,6 +53,8 @@
|
||||
self.numberHeightConstraint.constant = 13;
|
||||
self.cornHeight.constant = 18;
|
||||
self.nameLabelHeight.constant = 18;
|
||||
[self.cornBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
|
||||
self.giftNameLabel.textColor = RGB16(0xffffff);
|
||||
self.giftNameLabel.font = [UIFont systemFontOfSize:14];
|
||||
self.cornBtn.titleLabel.font = [UIFont systemFontOfSize:14];
|
||||
[self.cornBtn setImage:[UIImage imageNamed:@"mine_live_gift_corn"] forState:(UIControlStateNormal)];
|
||||
@@ -76,7 +83,9 @@
|
||||
-(void)setRoomGiftModel:(QXGiftModel *)roomGiftModel{
|
||||
_roomGiftModel = roomGiftModel;
|
||||
self.giftNameLabel.text = roomGiftModel.gift_name;
|
||||
[self.gitfImageView sd_setImageWithURL:[NSURL URLWithString:roomGiftModel.base_image]];
|
||||
NSString *encodedQuery = [roomGiftModel.base_image stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
||||
NSURL *imageUrl = [NSURL URLWithString:encodedQuery];
|
||||
[self.gitfImageView sd_setImageWithURL:imageUrl];
|
||||
[self.cornBtn setTitle:[NSString stringWithFormat:@" %@",roomGiftModel.gift_price] forState:(UIControlStateNormal)];
|
||||
if (roomGiftModel.num.intValue > 0) {
|
||||
self.numberBgView.hidden = NO;
|
||||
@@ -84,12 +93,38 @@
|
||||
}else{
|
||||
self.numberBgView.hidden = YES;
|
||||
}
|
||||
if (roomGiftModel.isSelected) {
|
||||
[self.cornBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
|
||||
self.giftNameLabel.textColor = RGB16(0x333333);
|
||||
}else{
|
||||
[self.cornBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
|
||||
self.giftNameLabel.textColor = RGB16(0xffffff);
|
||||
}
|
||||
|
||||
if ([roomGiftModel.activities_id isEqualToString:@"5"]) {
|
||||
self.activityImageView.hidden = NO;
|
||||
if (roomGiftModel.gift_bag.intValue == 10) {
|
||||
self.activityImageView.image = [UIImage imageNamed:@"a_gift_sky_icon"];
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageNamed:@"a_gift_sky_bg"] forState:(UIControlStateNormal)];
|
||||
}else if (roomGiftModel.gift_bag.intValue == 11) {
|
||||
self.activityImageView.image = [UIImage imageNamed:@"a_gift_age_icon"];
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageNamed:@"a_gift_age_bg"] forState:(UIControlStateNormal)];
|
||||
}else if (roomGiftModel.gift_bag.intValue == 12) {
|
||||
self.activityImageView.image = [UIImage imageNamed:@"a_gift_time_icon"];
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageNamed:@"a_gift_time_bg"] forState:(UIControlStateNormal)];
|
||||
}
|
||||
}else{
|
||||
self.activityImageView.hidden = YES;
|
||||
[self.selecteBtn setBackgroundImage:[UIImage imageWithColor:RGB16A(0xE9E9E9, 0.2)] forState:(UIControlStateNormal)];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setGiftWall:(QXUserGiftWallModel *)giftWall{
|
||||
_giftWall = giftWall;
|
||||
self.giftNameLabel.text = giftWall.gift_name;
|
||||
[self.gitfImageView sd_setImageWithURL:[NSURL URLWithString:giftWall.base_image]];
|
||||
NSString *encodedQuery = [giftWall.base_image stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
||||
NSURL *imageUrl = [NSURL URLWithString:encodedQuery];
|
||||
[self.gitfImageView sd_setImageWithURL:imageUrl];
|
||||
self.numberLabel.text = [NSString stringWithFormat:@"x%@",giftWall.total_count];
|
||||
self.grayCoverView.backgroundColor = RGB16A(0xE9E9E9, 0.8);
|
||||
if (giftWall.total_count.longLongValue == 0) {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QMu-c3-HcP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="253" height="303"/>
|
||||
<subviews>
|
||||
<button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YN0-v8-SAo">
|
||||
<button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YN0-v8-SAo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="253" height="303"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
</button>
|
||||
@@ -89,6 +89,12 @@
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="R17-3r-nZl">
|
||||
<rect key="frame" x="0.0" y="255.66666666666663" width="253" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="21" id="qst-iu-9r5"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="YN0-v8-SAo" secondAttribute="bottom" id="0UV-vT-lSa"/>
|
||||
@@ -97,6 +103,7 @@
|
||||
<constraint firstItem="3d1-U7-04n" firstAttribute="leading" secondItem="1oa-XB-z2H" secondAttribute="leading" id="8De-gE-33I"/>
|
||||
<constraint firstItem="rHb-Od-M4a" firstAttribute="top" secondItem="1oa-XB-z2H" secondAttribute="bottom" id="8dO-90-EcR"/>
|
||||
<constraint firstItem="fxQ-G1-4U5" firstAttribute="top" secondItem="QMu-c3-HcP" secondAttribute="top" constant="4" id="AaP-Bh-HJO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="R17-3r-nZl" secondAttribute="trailing" id="CD1-15-DjJ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="niZ-Xc-95T" secondAttribute="bottom" id="Hcq-Ev-Yt1"/>
|
||||
<constraint firstAttribute="trailing" secondItem="1oa-XB-z2H" secondAttribute="trailing" constant="5" id="IeP-It-gIz"/>
|
||||
<constraint firstItem="YN0-v8-SAo" firstAttribute="top" secondItem="QMu-c3-HcP" secondAttribute="top" id="MM9-lD-eb5"/>
|
||||
@@ -104,6 +111,8 @@
|
||||
<constraint firstItem="anN-iX-rGm" firstAttribute="top" secondItem="QMu-c3-HcP" secondAttribute="top" id="QVB-1T-j7f"/>
|
||||
<constraint firstAttribute="trailing" secondItem="YN0-v8-SAo" secondAttribute="trailing" id="TM5-gQ-Sjd"/>
|
||||
<constraint firstItem="niZ-Xc-95T" firstAttribute="top" secondItem="QMu-c3-HcP" secondAttribute="top" id="Vx1-do-zNx"/>
|
||||
<constraint firstItem="R17-3r-nZl" firstAttribute="centerY" secondItem="rHb-Od-M4a" secondAttribute="centerY" id="Ytt-7W-SM4"/>
|
||||
<constraint firstItem="R17-3r-nZl" firstAttribute="leading" secondItem="QMu-c3-HcP" secondAttribute="leading" id="aSk-9n-6Ln"/>
|
||||
<constraint firstAttribute="trailing" secondItem="anN-iX-rGm" secondAttribute="trailing" id="gMa-Ee-Va2"/>
|
||||
<constraint firstItem="YN0-v8-SAo" firstAttribute="leading" secondItem="QMu-c3-HcP" secondAttribute="leading" id="gwM-TL-16q"/>
|
||||
<constraint firstItem="rHb-Od-M4a" firstAttribute="trailing" secondItem="1oa-XB-z2H" secondAttribute="trailing" id="j58-9C-4jp"/>
|
||||
@@ -132,6 +141,7 @@
|
||||
</constraints>
|
||||
<size key="customSize" width="253" height="303"/>
|
||||
<connections>
|
||||
<outlet property="activityImageView" destination="R17-3r-nZl" id="bjL-Xi-hJI"/>
|
||||
<outlet property="cornBtn" destination="3d1-U7-04n" id="PLQ-JR-U9b"/>
|
||||
<outlet property="cornHeight" destination="svX-z8-2v4" id="ocG-gq-4Wo"/>
|
||||
<outlet property="giftNameLabel" destination="rHb-Od-M4a" id="nik-Bp-Ce4"/>
|
||||
@@ -151,7 +161,7 @@
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="gift_corn" width="6" height="6"/>
|
||||
<image name="gift_number_bg" width="22.666666030883789" height="8.6666669845581055"/>
|
||||
<image name="user_header_placehoulder" width="40" height="40"/>
|
||||
<image name="gift_number_bg" width="35" height="13"/>
|
||||
<image name="user_header_placehoulder" width="60" height="60"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
33
QXLive/Tabbar/弹窗/QXMeetActivityDriftView.h
Normal file
33
QXLive/Tabbar/弹窗/QXMeetActivityDriftView.h
Normal file
@@ -0,0 +1,33 @@
|
||||
//
|
||||
// QXMeetActivityDriftView.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/8/29.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
typedef NS_ENUM(NSInteger) {
|
||||
/// 即将开始
|
||||
QXMeetActivityDriftTypeWillStart = 1,
|
||||
/// 已经开始
|
||||
QXMeetActivityDriftTypeStart = 2,
|
||||
/// 落入背包
|
||||
QXMeetActivityDriftTypeFinished = 3,
|
||||
}QXMeetActivityDriftType;
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class QXMeetActivityDriftModel;
|
||||
@interface QXMeetActivityDriftView : UIView
|
||||
@property (nonatomic,strong)UIImageView *bgImageView;
|
||||
@property (nonatomic,strong)UILabel *titleLabel;
|
||||
@property (nonatomic,strong)NSMutableArray *dataArray;
|
||||
@property (nonatomic,strong)QXMeetActivityDriftModel *model;
|
||||
-(void)addActivityModel:(QXMeetActivityDriftModel*)model;
|
||||
+(instancetype)shareView;
|
||||
@end
|
||||
|
||||
@interface QXMeetActivityDriftModel : NSObject
|
||||
@property (nonatomic,strong)NSString *roomId;
|
||||
@property (nonatomic,strong)NSString *text;
|
||||
@property (nonatomic,assign)NSInteger from_type;
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
129
QXLive/Tabbar/弹窗/QXMeetActivityDriftView.m
Normal file
129
QXLive/Tabbar/弹窗/QXMeetActivityDriftView.m
Normal file
@@ -0,0 +1,129 @@
|
||||
//
|
||||
// QXMeetActivityDriftView.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/8/29.
|
||||
//
|
||||
|
||||
#import "QXMeetActivityDriftView.h"
|
||||
@interface QXMeetActivityDriftView()
|
||||
@property (nonatomic,assign)BOOL isPlaying;
|
||||
@end
|
||||
|
||||
@implementation QXMeetActivityDriftView
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.frame = CGRectMake(SCREEN_WIDTH, 0, ScaleWidth(358), ScaleWidth(136));
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
+(instancetype)shareView{
|
||||
static QXMeetActivityDriftView *manager = nil;
|
||||
static dispatch_once_t predicate;
|
||||
dispatch_once(&predicate, ^{
|
||||
manager = [[QXMeetActivityDriftView alloc] init];
|
||||
});
|
||||
return manager;
|
||||
}
|
||||
|
||||
-(void)initSubviews{
|
||||
self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ac_meet_start_pop_bg"]];
|
||||
[self addSubview:self.bgImageView];
|
||||
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self);
|
||||
}];
|
||||
|
||||
self.titleLabel = [[UILabel alloc] init];
|
||||
self.titleLabel.font = [UIFont systemFontOfSize:12];
|
||||
self.titleLabel.textColor = RGB16(0xFFFFFF);
|
||||
[self addSubview:self.titleLabel];;
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self.bgImageView).offset(15);
|
||||
make.centerY.equalTo(self.bgImageView);
|
||||
}];
|
||||
self.userInteractionEnabled = YES;
|
||||
MJWeakSelf
|
||||
[self addTapBlock:^(id _Nonnull obj) {
|
||||
if ([weakSelf.model.roomId isExist]) {
|
||||
[[QXGlobal shareGlobal] joinRoomWithRoomId:weakSelf.model.roomId isRejoin:NO navagationController:weakSelf.viewController.navigationController];
|
||||
}
|
||||
}];
|
||||
}
|
||||
-(void)addActivityModel:(QXMeetActivityDriftModel *)model{
|
||||
[self.dataArray addObject:model];
|
||||
[self giftAction];
|
||||
}
|
||||
|
||||
|
||||
-(void)giftAction{
|
||||
if (self.isPlaying) {
|
||||
return;
|
||||
}
|
||||
MJWeakSelf
|
||||
[QXMeetActivityDriftView shareView].isPlaying = YES;
|
||||
[QXMeetActivityDriftView shareView].model = [QXMeetActivityDriftView shareView].dataArray.firstObject;
|
||||
[KEYWINDOW addSubview:[QXMeetActivityDriftView shareView]];
|
||||
[UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
|
||||
[QXMeetActivityDriftView shareView].x = (SCREEN_WIDTH-ScaleWidth(316))/2;
|
||||
} completion:^(BOOL finished) {
|
||||
[weakSelf performSelector:@selector(dissmissAnimate) afterDelay:5];
|
||||
}];
|
||||
}
|
||||
-(void)dissmissAnimate{
|
||||
[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
|
||||
[QXMeetActivityDriftView shareView].x = -SCREEN_WIDTH;
|
||||
} completion:^(BOOL finished) {
|
||||
[QXMeetActivityDriftView shareView].x = SCREEN_WIDTH;
|
||||
[[QXMeetActivityDriftView shareView] removeFromSuperview];
|
||||
[[QXMeetActivityDriftView shareView].dataArray removeFirstObject];
|
||||
[QXMeetActivityDriftView shareView].isPlaying = NO;
|
||||
if ([QXMeetActivityDriftView shareView].dataArray.count>0) {
|
||||
[[QXMeetActivityDriftView shareView] giftAction];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)setModel:(QXMeetActivityDriftModel *)model{
|
||||
_model = model;
|
||||
self.titleLabel.text = model.text;
|
||||
switch (model.from_type) {
|
||||
case QXMeetActivityDriftTypeWillStart:{
|
||||
self.bgImageView.image = [UIImage imageNamed:@"ac_meet_will_pop_bg"];
|
||||
}
|
||||
break;
|
||||
case QXMeetActivityDriftTypeStart:{
|
||||
self.bgImageView.image = [UIImage imageNamed:@"ac_meet_start_pop_bg"];
|
||||
}
|
||||
break;
|
||||
case QXMeetActivityDriftTypeFinished:{
|
||||
self.bgImageView.image = [UIImage imageNamed:@"ac_meet_finished_pop_bg"];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-(NSMutableArray *)dataArray{
|
||||
if (!_dataArray) {
|
||||
_dataArray = [NSMutableArray array];
|
||||
}
|
||||
return _dataArray;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
@implementation QXMeetActivityDriftModel
|
||||
|
||||
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user