Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
pidan
/
FuSiLive
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e4e310c5
authored
Mar 02, 2026
by
ludi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成来自相关的逻辑
parent
37a5ffd0
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
386 additions
and
74 deletions
DevelopmentPods/FUSCommon/FUSCommon/Classes/Common/Other/JJCollectionViewRoundFlowLayout_Swift/JJCollectionViewRoundFlowLayout+Alignment_Swift.swift
DevelopmentPods/FUSFoundation/FUSFoundation/Classes/FUSFoundation/Tools/FormatContent/FUSFormatContentHelper.h
DevelopmentPods/FUSFoundation/FUSFoundation/Classes/FUSFoundation/Tools/FormatContent/FUSFormatContentHelper.m
Modules/FUSShowRoomModule/FUSShowRoomModule.xcodeproj/project.pbxproj
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Controller/FUSLiveMainViewController.m
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Model/FUSLiveChatModel.h
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Model/FUSLiveChatTableClickTypeRangeModel.h
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Model/FUSLiveChatTableClickTypeRangeModel.m
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Other/FunctionViewHelper/FUSLiveChatDataSourceHelper.h
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Other/FunctionViewHelper/FUSLiveChatDataSourceHelper.m
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableView.h
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableView.m
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableViewCell.h
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableViewCell.m
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/FUSLiveFunctionView.m
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKContentView/SubViews/UserContributeView/FFPKUserContributeListView.swift
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKControlView/FFPKControlPKModeView.swift
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKControlView/FFPKControlSettingView.swift
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKControlView/ViewModel/FFPKControlDataHelper.swift
Modules/FUSShowRoomModule/FUSShowRoomModule/Others/FUSShowRoomUDKeyStore.swift
DevelopmentPods/FUSCommon/FUSCommon/Classes/Common/Other/JJCollectionViewRoundFlowLayout_Swift/JJCollectionViewRoundFlowLayout+Alignment_Swift.swift
View file @
e4e310c5
...
@@ -123,7 +123,9 @@ extension JJCollectionViewRoundFlowLayout_Swift{
...
@@ -123,7 +123,9 @@ extension JJCollectionViewRoundFlowLayout_Swift{
useWidth
+=
attr
.
bounds
.
size
.
width
;
useWidth
+=
attr
.
bounds
.
size
.
width
;
}
}
let
firstLeft
=
(
layout
.
collectionView
!.
bounds
.
size
.
width
-
useWidth
-
(
JJCollectionViewFlowLayoutUtils_Swift
.
evaluatedMinimumInteritemSpacingForSectionWithCollectionLayout
(
layout
,
atIndex
:
theSection
)
*
CGFloat
(
layoutAttributesAttrs
.
count
)))
/
2.0
;
let
spacingCount
=
max
(
0
,
layoutAttributesAttrs
.
count
-
1
)
let
totalSpacing
=
JJCollectionViewFlowLayoutUtils_Swift
.
evaluatedMinimumInteritemSpacingForSectionWithCollectionLayout
(
layout
,
atIndex
:
theSection
)
*
CGFloat
(
spacingCount
)
let
firstLeft
=
(
layout
.
collectionView
!.
bounds
.
size
.
width
-
useWidth
-
totalSpacing
)
/
2.0
;
for
attr
in
layoutAttributesAttrs
{
for
attr
in
layoutAttributesAttrs
{
if
attr
.
representedElementKind
!=
nil
{
if
attr
.
representedElementKind
!=
nil
{
...
...
DevelopmentPods/FUSFoundation/FUSFoundation/Classes/FUSFoundation/Tools/FormatContent/FUSFormatContentHelper.h
View file @
e4e310c5
...
@@ -41,6 +41,16 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -41,6 +41,16 @@ NS_ASSUME_NONNULL_BEGIN
defaultColor
:(
UIColor
*
)
defaultColor
defaultColor
:(
UIColor
*
)
defaultColor
imageSize
:(
CGSize
)
imageSize
;
imageSize
:(
CGSize
)
imageSize
;
/// 创建一个通用公屏指令按钮,比如来自xxx公屏消息的那个黑色圆角
/// @param title 标题
/// @param font 字体
/// @param textColor 字体颜色
/// @param backgroundColor 背景颜色
+
(
NSMutableAttributedString
*
)
fus_createAttributedStringOrderBtn
:(
NSString
*
)
title
font
:(
UIFont
*
)
font
textColor
:(
UIColor
*
)
textColor
backgroundColor
:(
UIColor
*
)
backgroundColor
;
/// 获取dictionary里面的HTML Content字段,如果有多语言的文案,则匹配多语言的文案
/// 获取dictionary里面的HTML Content字段,如果有多语言的文案,则匹配多语言的文案
+
(
NSString
*
)
fus_getContentFromDict
:(
NSDictionary
*
)
dict
;
+
(
NSString
*
)
fus_getContentFromDict
:(
NSDictionary
*
)
dict
;
...
...
DevelopmentPods/FUSFoundation/FUSFoundation/Classes/FUSFoundation/Tools/FormatContent/FUSFormatContentHelper.m
View file @
e4e310c5
...
@@ -251,6 +251,34 @@
...
@@ -251,6 +251,34 @@
return
[[
NSMutableAttributedString
alloc
]
initWithString
:
@""
];
return
[[
NSMutableAttributedString
alloc
]
initWithString
:
@""
];
}
}
+
(
NSMutableAttributedString
*
)
fus_createAttributedStringOrderBtn
:
(
NSString
*
)
title
font
:
(
UIFont
*
)
font
textColor
:
(
UIColor
*
)
textColor
backgroundColor
:
(
UIColor
*
)
backgroundColor
{
UIView
*
btnView
=
[[
UIView
alloc
]
init
];
btnView
.
backgroundColor
=
backgroundColor
;
UILabel
*
patTitleLabel
=
[[
UILabel
alloc
]
init
];
patTitleLabel
.
font
=
[
UIFont
fus_themeFont
:
font
.
pointSize
-
4
];
patTitleLabel
.
textColor
=
textColor
;
patTitleLabel
.
text
=
title
;
[
patTitleLabel
sizeToFit
];
patTitleLabel
.
x
=
6
;
patTitleLabel
.
centerY
=
(
font
.
pointSize
+
2
)
/
2
;
[
btnView
addSubview
:
patTitleLabel
];
btnView
.
height
=
font
.
pointSize
+
2
;
btnView
.
width
=
CGRectGetMaxX
(
patTitleLabel
.
frame
)
+
6
;
btnView
.
layer
.
cornerRadius
=
btnView
.
height
/
2
;
UIView
*
btnBgView
=
[[
UIView
alloc
]
init
];
btnBgView
.
userInteractionEnabled
=
NO
;
btnBgView
.
frame
=
btnView
.
bounds
;
btnBgView
.
width
=
btnView
.
width
;
btnBgView
.
height
=
btnView
.
height
+
4
;
[
btnBgView
addSubview
:
btnView
];
btnView
.
center
=
btnBgView
.
center
;
return
[
NSAttributedString
attachmentStringWithContent
:
btnBgView
contentMode
:
UIViewContentModeScaleAspectFit
attachmentSize
:
btnBgView
.
size
alignToFont
:
font
alignment
:
YYTextVerticalAlignmentCenter
];
}
// 根据 string 创建一个可变的可变富文本
// 根据 string 创建一个可变的可变富文本
+
(
NSMutableAttributedString
*
)
fus_createAttributedStringForString
:
(
NSString
*
)
string
font
:
(
UIFont
*
)
font
+
(
NSMutableAttributedString
*
)
fus_createAttributedStringForString
:
(
NSString
*
)
string
font
:
(
UIFont
*
)
font
{
{
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule.xcodeproj/project.pbxproj
View file @
e4e310c5
...
@@ -601,6 +601,9 @@
...
@@ -601,6 +601,9 @@
00E6CB382F4EB07D00B63797
/* FUSShowRoomSocket.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CB372F4EB07D00B63797
/* FUSShowRoomSocket.swift */
;
};
00E6CB382F4EB07D00B63797
/* FUSShowRoomSocket.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CB372F4EB07D00B63797
/* FUSShowRoomSocket.swift */
;
};
00E6CB3B2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CB3A2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m */
;
};
00E6CB3B2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CB3A2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m */
;
};
00E6CB3C2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CB392F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h */
;
};
00E6CB3C2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CB392F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h */
;
};
00E6CD8E2F52EDF600B63797
/* FUSShowRoomUDKeyStore.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CD8D2F52EDF600B63797
/* FUSShowRoomUDKeyStore.swift */
;
};
00E6CD912F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CD902F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.m */
;
};
00E6CD922F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
00E6CD8F2F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.h */
;
};
3E261EA32F2C5F680008C0C0
/* FUSByteHelper.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
3E261EA12F2C5F680008C0C0
/* FUSByteHelper.h */
;
};
3E261EA32F2C5F680008C0C0
/* FUSByteHelper.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
3E261EA12F2C5F680008C0C0
/* FUSByteHelper.h */
;
};
3E261EA42F2C5F680008C0C0
/* FUSByteHelper.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
3E261EA22F2C5F680008C0C0
/* FUSByteHelper.m */
;
};
3E261EA42F2C5F680008C0C0
/* FUSByteHelper.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
3E261EA22F2C5F680008C0C0
/* FUSByteHelper.m */
;
};
3E261EA72F2C5FAB0008C0C0
/* FUSLinkMicMediator.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
3E261EA52F2C5FAB0008C0C0
/* FUSLinkMicMediator.h */
;
};
3E261EA72F2C5FAB0008C0C0
/* FUSLinkMicMediator.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
3E261EA52F2C5FAB0008C0C0
/* FUSLinkMicMediator.h */
;
};
...
@@ -2465,6 +2468,9 @@
...
@@ -2465,6 +2468,9 @@
00E6CB372F4EB07D00B63797
/* FUSShowRoomSocket.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
FUSShowRoomSocket.swift
;
sourceTree
=
"<group>"
;
};
00E6CB372F4EB07D00B63797
/* FUSShowRoomSocket.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
FUSShowRoomSocket.swift
;
sourceTree
=
"<group>"
;
};
00E6CB392F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSLiveOCToSwiftHelper.h
;
sourceTree
=
"<group>"
;
};
00E6CB392F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSLiveOCToSwiftHelper.h
;
sourceTree
=
"<group>"
;
};
00E6CB3A2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
FUSLiveOCToSwiftHelper.m
;
sourceTree
=
"<group>"
;
};
00E6CB3A2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
FUSLiveOCToSwiftHelper.m
;
sourceTree
=
"<group>"
;
};
00E6CD8D2F52EDF600B63797
/* FUSShowRoomUDKeyStore.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
FUSShowRoomUDKeyStore.swift
;
sourceTree
=
"<group>"
;
};
00E6CD8F2F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSLiveChatTableClickTypeRangeModel.h
;
sourceTree
=
"<group>"
;
};
00E6CD902F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.m */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
FUSLiveChatTableClickTypeRangeModel.m
;
sourceTree
=
"<group>"
;
};
3E261EA12F2C5F680008C0C0
/* FUSByteHelper.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSByteHelper.h
;
sourceTree
=
"<group>"
;
};
3E261EA12F2C5F680008C0C0
/* FUSByteHelper.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSByteHelper.h
;
sourceTree
=
"<group>"
;
};
3E261EA22F2C5F680008C0C0
/* FUSByteHelper.m */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
FUSByteHelper.m
;
sourceTree
=
"<group>"
;
};
3E261EA22F2C5F680008C0C0
/* FUSByteHelper.m */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
FUSByteHelper.m
;
sourceTree
=
"<group>"
;
};
3E261EA52F2C5FAB0008C0C0
/* FUSLinkMicMediator.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSLinkMicMediator.h
;
sourceTree
=
"<group>"
;
};
3E261EA52F2C5FAB0008C0C0
/* FUSLinkMicMediator.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
FUSLinkMicMediator.h
;
sourceTree
=
"<group>"
;
};
...
@@ -5018,6 +5024,8 @@
...
@@ -5018,6 +5024,8 @@
BECF744B2D30C76A00F5ABBC
/* FUSLiveBeforeReadyModel.m */
,
BECF744B2D30C76A00F5ABBC
/* FUSLiveBeforeReadyModel.m */
,
BECF744E2D30C7BF00F5ABBC
/* FUSBeforeLiveCondModel.h */
,
BECF744E2D30C7BF00F5ABBC
/* FUSBeforeLiveCondModel.h */
,
BECF744F2D30C7BF00F5ABBC
/* FUSBeforeLiveCondModel.m */
,
BECF744F2D30C7BF00F5ABBC
/* FUSBeforeLiveCondModel.m */
,
00E6CD8F2F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.h */
,
00E6CD902F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.m */
,
);
);
path
=
Model
;
path
=
Model
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
...
@@ -6202,6 +6210,7 @@
...
@@ -6202,6 +6210,7 @@
00E6CB372F4EB07D00B63797
/* FUSShowRoomSocket.swift */
,
00E6CB372F4EB07D00B63797
/* FUSShowRoomSocket.swift */
,
00E6CB392F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h */
,
00E6CB392F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.h */
,
00E6CB3A2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m */
,
00E6CB3A2F4F0BC400B63797
/* FUSLiveOCToSwiftHelper.m */
,
00E6CD8D2F52EDF600B63797
/* FUSShowRoomUDKeyStore.swift */
,
);
);
path
=
Others
;
path
=
Others
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
...
@@ -7173,6 +7182,7 @@
...
@@ -7173,6 +7182,7 @@
BED658B92C5B745E00668116
/* FUSHalfWebViewCollectionViewCell.h in Headers */
,
BED658B92C5B745E00668116
/* FUSHalfWebViewCollectionViewCell.h in Headers */
,
BECF744C2D30C76A00F5ABBC
/* FUSLiveBeforeReadyModel.h in Headers */
,
BECF744C2D30C76A00F5ABBC
/* FUSLiveBeforeReadyModel.h in Headers */
,
BED65AB62C5B745F00668116
/* FUSHomePageViewController.h in Headers */
,
BED65AB62C5B745F00668116
/* FUSHomePageViewController.h in Headers */
,
00E6CD922F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.h in Headers */
,
BED6591D2C5B745E00668116
/* FUSBulletMessageBaseView.h in Headers */
,
BED6591D2C5B745E00668116
/* FUSBulletMessageBaseView.h in Headers */
,
00BD44202D1EAA740099A96F
/* FUSCarEnterView.h in Headers */
,
00BD44202D1EAA740099A96F
/* FUSCarEnterView.h in Headers */
,
BE189DC72C733B460008418B
/* FSREnterEffectRoomGuarderViewController.h in Headers */
,
BE189DC72C733B460008418B
/* FSREnterEffectRoomGuarderViewController.h in Headers */
,
...
@@ -8482,10 +8492,14 @@
...
@@ -8482,10 +8492,14 @@
inputFileListPaths
=
(
inputFileListPaths
=
(
"${PODS_ROOT}/Target Support Files/Pods-FUSShowRoomModule/Pods-FUSShowRoomModule-resources-${CONFIGURATION}-input-files.xcfilelist"
,
"${PODS_ROOT}/Target Support Files/Pods-FUSShowRoomModule/Pods-FUSShowRoomModule-resources-${CONFIGURATION}-input-files.xcfilelist"
,
);
);
inputPaths
=
(
);
name
=
"[CP] Copy Pods Resources"
;
name
=
"[CP] Copy Pods Resources"
;
outputFileListPaths
=
(
outputFileListPaths
=
(
"${PODS_ROOT}/Target Support Files/Pods-FUSShowRoomModule/Pods-FUSShowRoomModule-resources-${CONFIGURATION}-output-files.xcfilelist"
,
"${PODS_ROOT}/Target Support Files/Pods-FUSShowRoomModule/Pods-FUSShowRoomModule-resources-${CONFIGURATION}-output-files.xcfilelist"
,
);
);
outputPaths
=
(
);
runOnlyForDeploymentPostprocessing
=
0
;
runOnlyForDeploymentPostprocessing
=
0
;
shellPath
=
/bin/sh
;
shellPath
=
/bin/sh
;
shellScript
=
"\"${PODS_ROOT}/Target Support Files/Pods-FUSShowRoomModule/Pods-FUSShowRoomModule-resources.sh\"\n"
;
shellScript
=
"\"${PODS_ROOT}/Target Support Files/Pods-FUSShowRoomModule/Pods-FUSShowRoomModule-resources.sh\"\n"
;
...
@@ -8869,6 +8883,7 @@
...
@@ -8869,6 +8883,7 @@
00A84DC42CA41D0C000A3BED
/* FUSPatAudiencePromptAlertView.m in Sources */
,
00A84DC42CA41D0C000A3BED
/* FUSPatAudiencePromptAlertView.m in Sources */
,
0089FD832D13F3460030DAA7
/* FUSLiveExchangeDiamondCollectionViewCell.swift in Sources */
,
0089FD832D13F3460030DAA7
/* FUSLiveExchangeDiamondCollectionViewCell.swift in Sources */
,
0089FD842D13F3460030DAA7
/* FUSLiveGiftView.m in Sources */
,
0089FD842D13F3460030DAA7
/* FUSLiveGiftView.m in Sources */
,
00E6CD8E2F52EDF600B63797
/* FUSShowRoomUDKeyStore.swift in Sources */
,
0089FD852D13F3460030DAA7
/* FUSRegalValueUpgradeView.m in Sources */
,
0089FD852D13F3460030DAA7
/* FUSRegalValueUpgradeView.m in Sources */
,
0089FD862D13F3460030DAA7
/* FUSGiftSelectedNumberBtnView.m in Sources */
,
0089FD862D13F3460030DAA7
/* FUSGiftSelectedNumberBtnView.m in Sources */
,
0089FD872D13F3460030DAA7
/* FUSLiveGiftCollectionViewCell.m in Sources */
,
0089FD872D13F3460030DAA7
/* FUSLiveGiftCollectionViewCell.m in Sources */
,
...
@@ -9000,6 +9015,7 @@
...
@@ -9000,6 +9015,7 @@
BE189E282C733B460008418B
/* FSRLivedictGiftView.m in Sources */
,
BE189E282C733B460008418B
/* FSRLivedictGiftView.m in Sources */
,
BED65AB72C5B745F00668116
/* FUSHomePageViewController.m in Sources */
,
BED65AB72C5B745F00668116
/* FUSHomePageViewController.m in Sources */
,
BE189DE82C733B460008418B
/* FSRActiveMotorEffectTableViewCell.m in Sources */
,
BE189DE82C733B460008418B
/* FSRActiveMotorEffectTableViewCell.m in Sources */
,
00E6CD912F52FA3900B63797
/* FUSLiveChatTableClickTypeRangeModel.m in Sources */
,
BED65A972C5B745F00668116
/* FUSLiveManagerViewController.m in Sources */
,
BED65A972C5B745F00668116
/* FUSLiveManagerViewController.m in Sources */
,
BED658AD2C5B745E00668116
/* FUSVideoEndedViewBottomCell.m in Sources */
,
BED658AD2C5B745E00668116
/* FUSVideoEndedViewBottomCell.m in Sources */
,
BED659162C5B745E00668116
/* FUSLiveChatCharacterHyperlinkTableViewCell.m in Sources */
,
BED659162C5B745E00668116
/* FUSLiveChatCharacterHyperlinkTableViewCell.m in Sources */
,
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Controller/FUSLiveMainViewController.m
View file @
e4e310c5
...
@@ -466,21 +466,21 @@ typedef NS_ENUM(NSInteger, FUSStreamState) {
...
@@ -466,21 +466,21 @@ typedef NS_ENUM(NSInteger, FUSStreamState) {
_streamView
=
[[
FUSLiveStreamView
alloc
]
initPushViewWithFrame
:
self
.
contentView
.
bounds
pushConfig
:
FUSLiveHelper
.
shareInstance
.
livePushConfig
];
_streamView
=
[[
FUSLiveStreamView
alloc
]
initPushViewWithFrame
:
self
.
contentView
.
bounds
pushConfig
:
FUSLiveHelper
.
shareInstance
.
livePushConfig
];
[
FUSLiveHelper
shareInstance
].
liveRoomType
=
FUSRoomTypeLive
;
[
FUSLiveHelper
shareInstance
].
liveRoomType
=
FUSRoomTypeLive
;
__weak
typeof
(
self
)
weakSelf
=
self
;
__weak
typeof
(
self
)
weakSelf
=
self
;
//
_streamView.pushView.captureHelper.sessionErrorHandler = ^(NSInteger errorCode) {
_streamView
.
pushView
.
captureHelper
.
sessionErrorHandler
=
^
(
NSInteger
errorCode
)
{
//
// [weakSelf ff
showLiveLoadingViewWithType:liveLoadingDismiss];
[
weakSelf
fus_
showLiveLoadingViewWithType
:
liveLoadingDismiss
];
// [BFModule(StatisticService) logEventWithReqtype:FFUserBehaviorEvent.broadcaststop];
// [BFModule(StatisticService) logEventWithReqtype:FFUserBehaviorEvent.broadcaststop];
// [FF
AlertView showAlertWithTitle:nil message:[NSString fus_localString:@"发生错误,请重新开播"] cancelButtonTitle:[NSString fus_localString:@"重新开播"] otherButtonTitles:nil clickBlock:^(NSInteger buttonIndex) {
[
FUS
AlertView
showAlertWithTitle
:
nil
message
:[
NSString
fus_localString
:
@"发生错误,请重新开播"
]
cancelButtonTitle
:
[
NSString
fus_localString
:
@"重新开播"
]
otherButtonTitles
:
nil
clickBlock
:^
(
NSInteger
buttonIndex
)
{
//
[weakSelf initPushPrepareView];
[
weakSelf
initPushPrepareView
];
//
[weakSelf.liveFunctionView removeFromSuperview];
[
weakSelf
.
liveFunctionView
removeFromSuperview
];
//
}];
}];
//
};
};
//
// ludy直播推流质量
// ludy直播推流质量
//
_streamView.pushView.captureHelper.networkQualityCallback = ^(FUSLiveCoreNetworkQuality networkQuality) {
_streamView
.
pushView
.
captureHelper
.
networkQualityCallback
=
^
(
FUSLiveCoreNetworkQuality
networkQuality
)
{
//
// [FUSLiveHelper shareInstance
].oc_pushStreamNetworkQuality = networkQuality;
[
FUSSwiftLiveHelper
shared
].
oc_pushStreamNetworkQuality
=
networkQuality
;
//
};
};
if
([
NSUserDefaults
fus_readCurrentUserObjectWithKey
:
FUSLiveUDKeys
.
fus_UD_KEY_liveMirrorOpened
])
{
if
([
NSUserDefaults
fus_readCurrentUserObjectWithKey
:
FUSLiveUDKeys
.
fus_UD_KEY_liveMirrorOpened
])
{
...
@@ -609,11 +609,14 @@ typedef NS_ENUM(NSInteger, FUSStreamState) {
...
@@ -609,11 +609,14 @@ typedef NS_ENUM(NSInteger, FUSStreamState) {
}];
}];
// self.playView.playerVideoFrameCallBackHandler = ^(NSString *uid, CVPixelBufferRef videoFrame) {
self
.
playView
.
playerVideoFrameCallBackHandler
=
^
(
NSString
*
uid
,
CVPixelBufferRef
videoFrame
)
{
// if (weakSelf.pipController && [uid isEqualToString:weakSelf.playView.mainUID]) {
if
(
weakSelf
.
pipController
&&
[
uid
isEqualToString
:
weakSelf
.
playView
.
mainUID
])
{
// [weakSelf.pipController enqueuePixelBuffer:videoFrame];
if
(
weakSelf
.
pipController
.
state
!=
VELPictureInPictureStateRunning
)
{
// }
return
;
// };
}
[
weakSelf
.
pipController
enqueuePixelBuffer
:
videoFrame
];
}
};
return
;
return
;
}
}
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Model/FUSLiveChatModel.h
View file @
e4e310c5
...
@@ -31,6 +31,9 @@ typedef NS_ENUM(NSInteger,FUSLiveChatModelClickType) {
...
@@ -31,6 +31,9 @@ typedef NS_ENUM(NSInteger,FUSLiveChatModelClickType) {
@property
(
nonatomic
,
copy
)
NSString
*
realUid
;
//正式 uid
@property
(
nonatomic
,
copy
)
NSString
*
realUid
;
//正式 uid
@property
(
nonatomic
,
copy
)
NSString
*
sex
;
//发送人性别
@property
(
nonatomic
,
copy
)
NSString
*
sex
;
//发送人性别
@property
(
nonatomic
,
copy
)
NSString
*
nickname
;
//发送人名称
@property
(
nonatomic
,
copy
)
NSString
*
nickname
;
//发送人名称
@property
(
nonatomic
,
copy
)
NSString
*
sendUid
;
//发送人UID
@property
(
nonatomic
,
copy
)
NSString
*
sendNickName
;
//发送人名称
@property
(
nonatomic
,
copy
)
NSString
*
face
;
//头像
@property
(
nonatomic
,
copy
)
NSString
*
face
;
//头像
@property
(
nonatomic
,
copy
)
NSString
*
toUid
;
//@用户ID、如果是弹幕的话,就是跳转到的直播间的ID
@property
(
nonatomic
,
copy
)
NSString
*
toUid
;
//@用户ID、如果是弹幕的话,就是跳转到的直播间的ID
@property
(
nonatomic
,
copy
)
NSString
*
toNickName
;
//@用户昵称、如果是弹幕的话,就是跳转到的直播间的昵称
@property
(
nonatomic
,
copy
)
NSString
*
toNickName
;
//@用户昵称、如果是弹幕的话,就是跳转到的直播间的昵称
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Model/FUSLiveChatTableClickTypeRangeModel.h
0 → 100644
View file @
e4e310c5
//
// FUSLiveChatTableClickTypeRangeModel.h
// FUSShowRoomModule
//
// Created by aaa on 2026/2/28.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// 点击事件分类
typedef
enum
:
NSUInteger
{
/// 文案
FUSLiveChatDataClickTypeContent
=
0
,
/// 昵称
FUSLiveChatDataClickTypeNickname
,
/// 拍一拍
FUSLiveChatDataClickTypePatAudience
,
/// 其他命令
FUSLiveChatDataClickTypeOrder
,
/// 来自
FUSLiveChatDataClickTypeComefrom
,
}
FUSLiveChatDataClickType
;
@interface
FUSLiveChatTableClickTypeRangeModel
:
NSObject
/// 昵称的范围
@property
(
nonatomic
,
assign
)
NSRange
nicknameRange
;
/// 拍一拍的范围
@property
(
nonatomic
,
assign
)
NSRange
patAudienceRange
;
/// 指令按钮的范围
@property
(
nonatomic
,
assign
)
NSRange
orderBtnRange
;
/// 来自按钮范围
@property
(
nonatomic
,
assign
)
NSRange
comefromRange
;
@end
NS_ASSUME_NONNULL_END
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Model/FUSLiveChatTableClickTypeRangeModel.m
0 → 100644
View file @
e4e310c5
//
// FUSLiveChatTableClickTypeRangeModel.m
// FUSShowRoomModule
//
// Created by aaa on 2026/2/28.
//
#import "FUSLiveChatTableClickTypeRangeModel.h"
@implementation
FUSLiveChatTableClickTypeRangeModel
@end
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Other/FunctionViewHelper/FUSLiveChatDataSourceHelper.h
View file @
e4e310c5
...
@@ -200,6 +200,9 @@
...
@@ -200,6 +200,9 @@
/// 取出撩一撩的范围
/// 取出撩一撩的范围
-
(
NSRange
)
patAudienceRangeForModelID
:(
NSString
*
)
modelId
;
-
(
NSRange
)
patAudienceRangeForModelID
:(
NSString
*
)
modelId
;
/// 取出来自按钮的范围
-
(
NSRange
)
comfromBtnRangeForModelID
:(
NSString
*
)
modelId
;
/**
/**
取出解析好的富文本
取出解析好的富文本
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/Other/FunctionViewHelper/FUSLiveChatDataSourceHelper.m
View file @
e4e310c5
This diff is collapsed.
Click to expand it.
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableView.h
View file @
e4e310c5
...
@@ -8,20 +8,34 @@
...
@@ -8,20 +8,34 @@
#import <UIKit/UIKit.h>
#import <UIKit/UIKit.h>
#import "FUSLiveChatModel.h"
#import "FUSLiveChatModel.h"
#import "FUSLiveChatTableClickTypeRangeModel.h"
#define TABLE_VIEW_WIDTH (UIView.fus_screenW - 80)
#define TABLE_VIEW_WIDTH (UIView.fus_screenW - 80)
#define TABLE_VIEW_HEIGHT 220
#define TABLE_VIEW_HEIGHT 220
@class
FUSLiveChatDataSourceHelper
;
@interface
FUSLiveChatTableView
:
UITableView
@interface
FUSLiveChatTableView
:
UITableView
#pragma mark - Property
#pragma mark - Property
/**
/**
点击昵称回调
点击昵称回调
*/
*/
@property
(
nonatomic
,
copy
)
void
(
^
onClickNicknameHandler
)(
FUSLiveChatModel
*
model
);
//
@property (nonatomic, copy) void(^onClickNicknameHandler)(FUSLiveChatModel *model);
/// 点击拍一拍回调
/// 点击拍一拍回调
@property
(
nonatomic
,
copy
)
void
(
^
onClickPatAudiencetHandler
)(
FUSLiveChatModel
*
model
);
//@property (nonatomic, copy) void(^onClickPatAudiencetHandler)(FUSLiveChatModel *model);
/**
数据源
*/
@property
(
nonatomic
,
strong
)
FUSLiveChatDataSourceHelper
*
dataSourceHelper
;
/// 点击各种按钮的回调
@property
(
nonatomic
,
copy
)
void
(
^
onClickMessageWithModel
)(
FUSLiveChatDataClickType
type
,
FUSLiveChatModel
*
model
,
NSRange
range
);
// 宽度改变的回调
@property
(
nonatomic
,
copy
)
void
(
^
tableViewWidthDidChangedHandler
)(
CGFloat
tableViewWidth
);
/**
/**
允许发送通知
允许发送通知
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableView.m
View file @
e4e310c5
...
@@ -28,10 +28,6 @@
...
@@ -28,10 +28,6 @@
*/
*/
@property
(
nonatomic
,
strong
)
NSTimer
*
timer
;
@property
(
nonatomic
,
strong
)
NSTimer
*
timer
;
/**
数据源
*/
@property
(
nonatomic
,
strong
)
FUSLiveChatDataSourceHelper
*
dataSourceHelper
;
@property
(
nonatomic
,
strong
)
UIButton
*
scrollToBottomBtn
;
@property
(
nonatomic
,
strong
)
UIButton
*
scrollToBottomBtn
;
...
@@ -101,6 +97,10 @@
...
@@ -101,6 +97,10 @@
// 设置 pk 时的 scrollToBottomBtn 值
// 设置 pk 时的 scrollToBottomBtn 值
self
.
scrollToBottomBtn
.
y
=
self
.
height
-
(
self
.
scrollToBottomBtn
.
height
+
10
);
self
.
scrollToBottomBtn
.
y
=
self
.
height
-
(
self
.
scrollToBottomBtn
.
height
+
10
);
if
(
self
.
tableViewWidthDidChangedHandler
)
{
self
.
tableViewWidthDidChangedHandler
(
CGRectGetWidth
(
frame
));
}
}
}
#pragma mark - override
#pragma mark - override
...
@@ -176,6 +176,7 @@
...
@@ -176,6 +176,7 @@
NSAttributedString
*
attr
=
[
self
.
dataSourceHelper
attributedStringForModelID
:
model
.
ID
];
NSAttributedString
*
attr
=
[
self
.
dataSourceHelper
attributedStringForModelID
:
model
.
ID
];
NSRange
patAudienceRange
=
[
self
.
dataSourceHelper
patAudienceRangeForModelID
:
model
.
ID
];
NSRange
patAudienceRange
=
[
self
.
dataSourceHelper
patAudienceRangeForModelID
:
model
.
ID
];
NSRange
comefromRange
=
[
self
.
dataSourceHelper
comfromBtnRangeForModelID
:
model
.
ID
];
CGFloat
height
=
[
self
.
dataSourceHelper
heightForModelID
:
model
.
ID
];
CGFloat
height
=
[
self
.
dataSourceHelper
heightForModelID
:
model
.
ID
];
CGFloat
width
=
[
self
.
dataSourceHelper
widthForModelID
:
model
.
ID
];
CGFloat
width
=
[
self
.
dataSourceHelper
widthForModelID
:
model
.
ID
];
...
@@ -197,21 +198,35 @@
...
@@ -197,21 +198,35 @@
showBackground
=
YES
;
showBackground
=
YES
;
}
}
[
cell
fus_setupCellWithModel
:
model
attributedString
:
attr
patAudienceRange
:
patAudienceRange
height
:
height
width
:
width
showBackground
:
showBackground
];
FUSLiveChatTableClickTypeRangeModel
*
rangeModel
=
[[
FUSLiveChatTableClickTypeRangeModel
alloc
]
init
];
// rangeModel.nicknameRange = range;
rangeModel
.
patAudienceRange
=
patAudienceRange
;
// rangeModel.orderBtnRange = orderBtnRange;
rangeModel
.
comefromRange
=
comefromRange
;
[
cell
setOnClickNicknameWithModel
:
^
(
FUSLiveChatModel
*
model
)
{
[
cell
fus_setupCellWithModel
:
model
attributedString
:
attr
rangeModel
:
rangeModel
height
:
height
width
:
width
showBackground
:
showBackground
];
if
(
weakSelf
.
onClickNicknameHandler
)
{
[
cell
setOnClickMessageWithModel
:
^
(
FUSLiveChatDataClickType
type
,
FUSLiveChatModel
*
model
,
NSRange
range
)
{
weakSelf
.
onClickNicknameHandler
(
model
);
if
(
weakSelf
.
onClickMessageWithModel
)
{
weakSelf
.
onClickMessageWithModel
(
type
,
model
,
range
);
}
}
}];
}];
[
cell
setOnClickPatAudienceWithModel
:
^
(
FUSLiveChatModel
*
model
)
{
// [cell fus_setupCellWithModel:model attributedString:attr patAudienceRange:patAudienceRange height:height width:width showBackground:showBackground];
// 点击了撩一撩
//
if
(
weakSelf
.
onClickPatAudiencetHandler
)
{
// [cell setOnClickNicknameWithModel:^(FUSLiveChatModel *model) {
weakSelf
.
onClickPatAudiencetHandler
(
model
);
//
}
// if (weakSelf.onClickNicknameHandler) {
}];
// weakSelf.onClickNicknameHandler(model);
// }
// }];
//
// [cell setOnClickPatAudienceWithModel:^(FUSLiveChatModel *model) {
// // 点击了撩一撩
// if (weakSelf.onClickPatAudiencetHandler) {
// weakSelf.onClickPatAudiencetHandler(model);
// }
// }];
return
cell
;
return
cell
;
}
}
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableViewCell.h
View file @
e4e310c5
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
#import <UIKit/UIKit.h>
#import <UIKit/UIKit.h>
#import "FUSLiveChatModel.h"
#import "FUSLiveChatModel.h"
#import "FUSLiveChatTableClickTypeRangeModel.h"
#define CELL_MARGIN 1 // cell 上下空间
#define CELL_MARGIN 1 // cell 上下空间
#define CELL_LEADING_SPACE 5 // cell 前后距离 20 / 10
#define CELL_LEADING_SPACE 5 // cell 前后距离 20 / 10
...
@@ -19,20 +20,23 @@
...
@@ -19,20 +20,23 @@
//@property (nonatomic, copy) void(^onClickNickname)(NSString *);
//@property (nonatomic, copy) void(^onClickNickname)(NSString *);
@property
(
nonatomic
,
copy
)
void
(
^
onClickNicknameWithModel
)(
FUSLiveChatModel
*
);
//
@property (nonatomic, copy) void(^onClickNicknameWithModel)(FUSLiveChatModel *);
@property
(
nonatomic
,
copy
)
void
(
^
onClickPatAudienceWithModel
)(
FUSLiveChatModel
*
);
//@property (nonatomic, copy) void(^onClickPatAudienceWithModel)(FUSLiveChatModel *);
/// 点击各种按钮的回调
@property
(
nonatomic
,
copy
)
void
(
^
onClickMessageWithModel
)(
FUSLiveChatDataClickType
type
,
FUSLiveChatModel
*
model
,
NSRange
range
);
-
(
void
)
fus_setupCellWithModel
:(
FUSLiveChatModel
*
)
model
-
(
void
)
fus_setupCellWithModel
:(
FUSLiveChatModel
*
)
model
attributedString
:(
NSAttributedString
*
)
attr
attributedString
:(
NSAttributedString
*
)
attr
patAudienceRange
:(
NSRange
)
patAudienceRange
rangeModel
:(
FUSLiveChatTableClickTypeRangeModel
*
)
rangeModel
height
:(
CGFloat
)
height
height
:(
CGFloat
)
height
width
:(
CGFloat
)
width
width
:(
CGFloat
)
width
showBackground
:(
BOOL
)
showBackground
;
showBackground
:(
BOOL
)
showBackground
;
-
(
void
)
fus_changeCellToModel
:(
FUSLiveChatModel
*
)
model
-
(
void
)
fus_changeCellToModel
:(
FUSLiveChatModel
*
)
model
attributedString
:(
NSAttributedString
*
)
attr
attributedString
:(
NSAttributedString
*
)
attr
patAudienceRange
:(
NSRange
)
patAudienceRange
rangeModel
:(
FUSLiveChatTableClickTypeRangeModel
*
)
rangeModel
height
:(
CGFloat
)
height
height
:(
CGFloat
)
height
width
:(
CGFloat
)
width
width
:(
CGFloat
)
width
completionHandler
:(
void
(
^
)(
FUSLiveChatModel
*
oldModel
))
completionHandler
;
completionHandler
:(
void
(
^
)(
FUSLiveChatModel
*
oldModel
))
completionHandler
;
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/ChatTableView/FUSLiveChatTableViewCell.m
View file @
e4e310c5
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
#import "FUSLiveHelper.h"
#import "FUSLiveHelper.h"
#import "FUSLiveChatTableView.h"
#import "FUSLiveChatTableView.h"
#import <FUSShowRoomModule/FUSShowRoomModule-Swift.h>
@interface
FUSLiveChatTableViewCell
()
<
FUSLiveChatLabelDelegate
>
@interface
FUSLiveChatTableViewCell
()
<
FUSLiveChatLabelDelegate
>
//@property (nonatomic, strong) UIButton *nickNameBtn;
//@property (nonatomic, strong) UIButton *nickNameBtn;
...
@@ -30,8 +31,8 @@
...
@@ -30,8 +31,8 @@
// 背景 View
// 背景 View
@property
(
nonatomic
,
strong
)
UIImageView
*
bgView
;
@property
(
nonatomic
,
strong
)
UIImageView
*
bgView
;
///
拍一拍的
范围
///
点击的类型
范围
@property
(
nonatomic
,
assign
)
NSRange
patAudienceRange
;
@property
(
nonatomic
,
strong
)
FUSLiveChatTableClickTypeRangeModel
*
rangeModel
;
@end
@end
...
@@ -116,27 +117,88 @@
...
@@ -116,27 +117,88 @@
}
}
}
}
if
(
weakSelf
.
onClickMessageWithModel
==
nil
)
{
// 没有设置点击事件
return
;
}
if
(
weakSelf
.
model
.
patStatus
==
1
&&
range
.
location
==
weakSelf
.
rangeModel
.
patAudienceRange
.
location
)
{
if
(
weakSelf
.
model
.
patStatus
==
1
&&
range
.
location
==
weakSelf
.
patAudienceRange
.
location
)
{
// 拍一拍只算一个长度,因为只是一个控件
// 撩一撩
if
([
FUSSwiftLiveHelper
shared
].
liveType
==
FUSLiveTypeAudience
)
{
if
([
FUSLiveHelper
shareInstance
].
liveType
==
FUSLiveTypeAudience
)
{
// 如果是观众端,那么直接无视
// 如果是观众端,那么直接无视
return
;
return
;
}
}
if
(
weakSelf
.
onClickPatAudienceWithModel
)
{
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypePatAudience
,
weakSelf
.
model
,
range
);
weakSelf
.
onClickPatAudienceWithModel
(
weakSelf
.
model
);
}
else
if
([
weakSelf
.
model
ffisClickOrderModel
]
&&
range
.
location
==
weakSelf
.
rangeModel
.
orderBtnRange
.
location
)
{
// 通用order按钮
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeOrder
,
weakSelf
.
model
,
range
);
}
else
if
(
weakSelf
.
rangeModel
.
comefromRange
.
location
!=
kCFNotFound
&&
range
.
location
==
weakSelf
.
rangeModel
.
comefromRange
.
location
)
{
// 来自
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeComefrom
,
weakSelf
.
model
,
range
);
}
else
if
(
weakSelf
.
rangeModel
.
nicknameRange
.
location
!=
kCFNotFound
&&
NSMaxRange
(
weakSelf
.
rangeModel
.
nicknameRange
)
>
0
)
{
// 有昵称的rang,并且点到了昵称
if
(
range
.
location
>=
weakSelf
.
rangeModel
.
nicknameRange
.
location
&&
NSMaxRange
(
range
)
<=
NSMaxRange
(
weakSelf
.
rangeModel
.
nicknameRange
))
{
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeNickname
,
weakSelf
.
model
,
range
);
}
}
// else if ( weakSelf.model.socketCID == 9999 ) {
// // 有昵称,但是没点到昵称,那么应该就是点到内容了
// weakSelf.onClickMessageWithModel(FFLiveChatDataClickTypeContent, weakSelf.model, range);
// }
else
if
([
weakSelf
.
model
.
type
isEqualToString
:
@"-19994"
])
{
// 超链接,直接分配给nickname
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeNickname
,
weakSelf
.
model
,
range
);
}
}
else
{
else
{
//其他情况
//其他
if
((
!
[
NSString
isNull
:
weakSelf
.
model
.
uid
]
&&
weakSelf
.
model
.
uid
.
integerValue
!=
0
)
if
(
!
[
NSString
isNullWithString
:
weakSelf
.
model
.
msg
])
{
||
weakSelf
.
model
.
clickType
==
FUSLiveChatModelClickTypeDewGift
||
(
weakSelf
.
model
.
clickType
==
FUSLiveChatModelClickTypeOtherLiveRoom
&&
!
[
NSString
isNull
:
weakSelf
.
model
.
toUid
]))
{
NSRange
textRange
=
[
text
.
string
rangeOfString
:
weakSelf
.
model
.
msg
];
// 能nickname的就交付给nickname
if
(
textRange
.
location
!=
NSNotFound
&&
if
(
weakSelf
.
onClickNicknameWithModel
)
weakSelf
.
onClickNicknameWithModel
(
weakSelf
.
model
);
range
.
location
>=
textRange
.
location
&&
NSMaxRange
(
range
)
<=
NSMaxRange
(
textRange
))
{
// 检测到确实点了text的情况
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeContent
,
weakSelf
.
model
,
range
);
return
;
}
// 兜底都给nickname,因为它有nickname
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeNickname
,
weakSelf
.
model
,
range
);
}
}
}
}
else
{
//其他情况
weakSelf
.
onClickMessageWithModel
(
FUSLiveChatDataClickTypeNickname
,
weakSelf
.
model
,
range
);
}
}
// if (weakSelf.model.patStatus == 1 && range.location == weakSelf.patAudienceRange.location) {
// // 撩一撩
// if ([FUSLiveHelper shareInstance].liveType == FUSLiveTypeAudience) {
// // 如果是观众端,那么直接无视
// return;
// }
//
// if (weakSelf.onClickPatAudienceWithModel) {
// weakSelf.onClickPatAudienceWithModel(weakSelf.model);
// }
// }
// else {
// //其他情况
// if ((![NSString isNull:weakSelf.model.uid] && weakSelf.model.uid.integerValue != 0)
// || weakSelf.model.clickType == FUSLiveChatModelClickTypeDewGift
// || (weakSelf.model.clickType == FUSLiveChatModelClickTypeOtherLiveRoom && ![NSString isNull:weakSelf.model.toUid])) {
// // 能nickname的就交付给nickname
// if (weakSelf.onClickNicknameWithModel) weakSelf.onClickNicknameWithModel(weakSelf.model);
// }
// }
};
};
}
}
...
@@ -152,13 +214,13 @@
...
@@ -152,13 +214,13 @@
-
(
void
)
fus_setupCellWithModel
:
(
FUSLiveChatModel
*
)
model
-
(
void
)
fus_setupCellWithModel
:
(
FUSLiveChatModel
*
)
model
attributedString
:
(
NSAttributedString
*
)
attr
attributedString
:
(
NSAttributedString
*
)
attr
patAudienceRange
:
(
NSRange
)
patAudienceRange
rangeModel
:
(
FUSLiveChatTableClickTypeRangeModel
*
)
rangeModel
height
:
(
CGFloat
)
height
height
:
(
CGFloat
)
height
width
:
(
CGFloat
)
width
width
:
(
CGFloat
)
width
showBackground
:
(
BOOL
)
showBackground
showBackground
:
(
BOOL
)
showBackground
{
{
_
patAudienceRange
=
patAudienceRange
;
_
rangeModel
=
rangeModel
;
if
(
attr
.
length
&&
[
self
.
contentLabel
.
attributedText
isEqualToAttributedString
:
attr
])
{
if
(
attr
.
length
&&
[
self
.
contentLabel
.
attributedText
isEqualToAttributedString
:
attr
])
{
// 设置 frame
// 设置 frame
...
@@ -218,7 +280,7 @@
...
@@ -218,7 +280,7 @@
-
(
void
)
fus_changeCellToModel
:
(
FUSLiveChatModel
*
)
model
-
(
void
)
fus_changeCellToModel
:
(
FUSLiveChatModel
*
)
model
attributedString
:
(
NSAttributedString
*
)
attr
attributedString
:
(
NSAttributedString
*
)
attr
patAudienceRange
:
(
NSRange
)
patAudienceRange
rangeModel
:
(
FUSLiveChatTableClickTypeRangeModel
*
)
rangeModel
height
:
(
CGFloat
)
height
height
:
(
CGFloat
)
height
width
:
(
CGFloat
)
width
width
:
(
CGFloat
)
width
completionHandler
:
(
void
(
^
)(
FUSLiveChatModel
*
oldModel
))
completionHandler
completionHandler
:
(
void
(
^
)(
FUSLiveChatModel
*
oldModel
))
completionHandler
...
@@ -243,7 +305,7 @@
...
@@ -243,7 +305,7 @@
}
}
// 设置 lable
// 设置 lable
[
self
fus_setupCellWithModel
:
model
attributedString
:
attr
patAudienceRange
:
patAudienceRange
height
:
height
width
:
width
showBackground
:
showBackground
];
[
self
fus_setupCellWithModel
:
model
attributedString
:
attr
rangeModel
:
rangeModel
height
:
height
width
:
width
showBackground
:
showBackground
];
// 持有当前内容
// 持有当前内容
self
.
currentString
=
model
.
msg
;
self
.
currentString
=
model
.
msg
;
// 设置 frame
// 设置 frame
...
@@ -256,8 +318,9 @@
...
@@ -256,8 +318,9 @@
completionHandler
(
oldModel
);
completionHandler
(
oldModel
);
}
}
MJWeakSelf
dispatch_after
(
dispatch_time
(
DISPATCH_TIME_NOW
,
(
int64_t
)(
1
.
0
*
NSEC_PER_SEC
)),
dispatch_get_main_queue
(),
^
{
dispatch_after
(
dispatch_time
(
DISPATCH_TIME_NOW
,
(
int64_t
)(
1
.
0
*
NSEC_PER_SEC
)),
dispatch_get_main_queue
(),
^
{
_
isChanging
=
NO
;
weakSelf
.
isChanging
=
NO
;
});
});
}
}
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/FUSLiveFunctionView.m
View file @
e4e310c5
This diff is collapsed.
Click to expand it.
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKContentView/SubViews/UserContributeView/FFPKUserContributeListView.swift
View file @
e4e310c5
...
@@ -51,6 +51,9 @@ extension FFPKUserContributeListView{
...
@@ -51,6 +51,9 @@ extension FFPKUserContributeListView{
class
FFPKUserContributeListView
:
FUSBaseView
{
class
FFPKUserContributeListView
:
FUSBaseView
{
/// 刷新头像的垃圾袋
private
var
refreshCollectionViewActionDisposebag
=
DisposeBag
()
/// 点击了头像
/// 点击了头像
public
var
faceDidClick
:
((
FFPKContributeUserModel
?)
->
Void
)?
public
var
faceDidClick
:
((
FFPKContributeUserModel
?)
->
Void
)?
...
@@ -142,29 +145,56 @@ class FFPKUserContributeListView: FUSBaseView {
...
@@ -142,29 +145,56 @@ class FFPKUserContributeListView: FUSBaseView {
})
})
.
disposed
(
by
:
disposeBag
)
.
disposed
(
by
:
disposeBag
)
if
FUSSwiftLiveHelper
.
shared
.
liveType
==
.
anchor
{
// 主播根据是否关闭pk动效做优化
FFPKControlDataHelper
.
share
.
pkAnimationIsOn
.
distinctUntilChanged
()
.
subscribe
(
onNext
:
{[
weak
self
]
isOn
in
guard
let
self
=
self
else
{
return
}
/// 关闭动效的话2秒更新一次
let
refreshDelay
:
Int
=
isOn
?
800
:
2000
self
.
fus_setupCollectionViewUpdateAction
(
refreshDelay
:
refreshDelay
)
})
.
disposed
(
by
:
disposeBag
)
}
else
{
self
.
fus_setupCollectionViewUpdateAction
(
refreshDelay
:
800
)
}
}
/// 设置刷新计时器,单位毫秒
private
func
fus_setupCollectionViewUpdateAction
(
refreshDelay
:
Int
)
{
self
.
refreshCollectionViewActionDisposebag
=
.
init
()
// ui在这里更新,和数据传输严格分离,解决崩溃问题
// ui在这里更新,和数据传输严格分离,解决崩溃问题
Observable
<
Int
>.
interval
(
.
milliseconds
(
800
),
scheduler
:
MainScheduler
.
instance
)
Observable
<
Int
>.
interval
(
.
milliseconds
(
refreshDelay
),
scheduler
:
MainScheduler
.
instance
)
.
subscribe
(
onNext
:
{[
weak
self
]
_
in
.
subscribe
(
onNext
:
{[
weak
self
]
_
in
self
?
.
ff_updateCollectionViewCacheData
()
self
?
.
ff_updateCollectionViewCacheData
()
})
})
.
disposed
(
by
:
disposeB
ag
)
.
disposed
(
by
:
self
.
refreshCollectionViewActionDisposeb
ag
)
}
}
func
setUsers
(
_
users
:
[
FFPKContributeUserModel
],
total
:
Int
,
showAnim
:
Bool
,
sideColor
:
FFPKSideColor
)
{
func
setUsers
(
_
users
:
[
FFPKContributeUserModel
],
total
:
Int
,
showAnim
:
Bool
,
sideColor
:
FFPKSideColor
)
{
// dispatch_async_on_main_queue {
self
.
totalUser
=
total
self
.
totalUser
=
total
self
.
showAnim
=
showAnim
self
.
showAnim
=
showAnim
self
.
sideColor
=
sideColor
self
.
sideColor
=
sideColor
if
FUSSwiftLiveHelper
.
shared
.
liveType
==
.
anchor
&&
FFPKControlDataHelper
.
share
.
pkAnimationIsOn
.
value
==
false
{
// 主播根据是否关闭pk动效做优化
self
.
showAnim
=
false
}
if
self
.
users
.
count
<=
0
||
UIApplication
.
shared
.
applicationState
!=
.
active
{
if
self
.
users
.
count
<=
0
||
UIApplication
.
shared
.
applicationState
!=
.
active
{
// self.updateCollectionView(with: users, isReloadData: true)
self
.
ff_preUpdateCollectionView
(
with
:
users
,
isReloadData
:
true
)
self
.
ff_preUpdateCollectionView
(
with
:
users
,
isReloadData
:
true
)
}
else
{
}
else
{
// self.updateCollectionView(with: users, isReloadData: false)
self
.
ff_preUpdateCollectionView
(
with
:
users
,
isReloadData
:
false
)
self
.
ff_preUpdateCollectionView
(
with
:
users
,
isReloadData
:
false
)
}
}
// }
}
}
/// 准备更新 CollectionView,这里仅仅做数据收集
/// 准备更新 CollectionView,这里仅仅做数据收集
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKControlView/FFPKControlPKModeView.swift
View file @
e4e310c5
...
@@ -21,9 +21,12 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
...
@@ -21,9 +21,12 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
/// 当前选择
/// 当前选择
var
currentSelect
:
Int
=
0
var
currentSelect
:
Int
=
0
let
itemWidth
:
CGFloat
=
172
let
pkModeItemWidth
:
CGFloat
=
172
let
itemMargin
:
CGFloat
=
12
let
pkModeItemMargin
:
CGFloat
=
12
let
collectionMargin
:
CGFloat
=
18
let
pkModeCollectionMargin
:
CGFloat
=
18
let
gamePlayItemWidth
:
CGFloat
=
160
let
gamePlayItemMargin
:
CGFloat
=
6
override
func
makeUI
()
{
override
func
makeUI
()
{
super
.
makeUI
()
super
.
makeUI
()
...
@@ -69,10 +72,10 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
...
@@ -69,10 +72,10 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
if
let
layout
=
self
.
collectionView
.
collectionViewLayout
as?
JJCollectionViewRoundFlowLayout_Swift
{
if
let
layout
=
self
.
collectionView
.
collectionViewLayout
as?
JJCollectionViewRoundFlowLayout_Swift
{
layout
.
scrollDirection
=
.
horizontal
layout
.
scrollDirection
=
.
horizontal
layout
.
minimumLineSpacing
=
itemMargin
//
layout.minimumLineSpacing = itemMargin
layout
.
minimumInteritemSpacing
=
itemMargin
//
layout.minimumInteritemSpacing = itemMargin
layout
.
itemSize
=
CGSize
(
width
:
itemWidth
,
height
:
196
)
//
layout.itemSize = CGSize(width: itemWidth, height: 196)
layout
.
sectionInset
=
UIEdgeInsets
(
top
:
0
,
left
:
collectionMargin
,
bottom
:
0
,
right
:
c
ollectionMargin
)
layout
.
sectionInset
=
UIEdgeInsets
(
top
:
0
,
left
:
pkModeCollectionMargin
,
bottom
:
0
,
right
:
pkModeC
ollectionMargin
)
layout
.
collectionCellAlignmentType
=
.
Center
layout
.
collectionCellAlignmentType
=
.
Center
layout
.
isRoundEnabled
=
false
layout
.
isRoundEnabled
=
false
...
@@ -83,7 +86,7 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
...
@@ -83,7 +86,7 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
self
.
collectionView
.
snp
.
makeConstraints
{
make
in
self
.
collectionView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
equalToSuperview
()
make
.
left
.
right
.
equalToSuperview
()
make
.
top
.
equalTo
(
modeDescLabel
.
snp
.
bottom
)
.
offset
(
10
)
make
.
top
.
equalTo
(
modeDescLabel
.
snp
.
bottom
)
.
offset
(
10
)
make
.
height
.
equalTo
(
210
)
//
make.height.equalTo(210)
}
}
self
.
nextBtn
.
style
=
.
gradientLeftToRight
self
.
nextBtn
.
style
=
.
gradientLeftToRight
...
@@ -94,6 +97,7 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
...
@@ -94,6 +97,7 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
make
.
top
.
equalTo
(
collectionView
.
snp
.
bottom
)
.
offset
(
14
)
make
.
top
.
equalTo
(
collectionView
.
snp
.
bottom
)
.
offset
(
14
)
make
.
centerX
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
make
.
size
.
equalTo
(
CGSizeMake
(
252
,
44
))
make
.
size
.
equalTo
(
CGSizeMake
(
252
,
44
))
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
UIView
.
fus_SafeBottom
()
-
10
)
}
}
self
.
nextBtn
.
isHidden
=
true
self
.
nextBtn
.
isHidden
=
true
}
}
...
@@ -144,21 +148,37 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
...
@@ -144,21 +148,37 @@ class FFPKControlPKModeView: FFPKControlSubBaseView {
func
ff_reloadCollectionView
(){
func
ff_reloadCollectionView
(){
if
self
.
viewType
==
.
pkGamePlay
{
// 玩法一直都是竖直的
self
.
collectionViewLayout
?
.
scrollDirection
=
.
vertical
self
.
collectionViewLayout
?
.
minimumLineSpacing
=
self
.
gamePlayItemMargin
self
.
collectionViewLayout
?
.
minimumInteritemSpacing
=
self
.
gamePlayItemMargin
self
.
collectionViewLayout
?
.
collectionCellAlignmentType
=
.
Left
let
leftRightMargin
:
CGFloat
=
(
self
.
collectionView
.
width
-
(
gamePlayItemWidth
*
2
+
gamePlayItemMargin
))
/
2.0
self
.
collectionViewLayout
?
.
sectionInset
=
UIEdgeInsets
(
top
:
0
,
left
:
leftRightMargin
,
bottom
:
0
,
right
:
leftRightMargin
)
}
else
{
// pk 模式不变
let
itemCount
:
CGFloat
=
CGFloat
(
self
.
dataList
.
count
)
let
itemCount
:
CGFloat
=
CGFloat
(
self
.
dataList
.
count
)
if
itemCount
<=
1
{
if
itemCount
<=
1
{
self
.
collectionViewLayout
?
.
scrollDirection
=
.
vertical
self
.
collectionViewLayout
?
.
scrollDirection
=
.
vertical
}
}
if
itemCount
*
itemWidth
+
(
itemCount
-
1
)
*
itemMargin
+
2*
c
ollectionMargin
<
UIView
.
fus_screenW
()
{
if
itemCount
*
pkModeItemWidth
+
(
itemCount
-
1
)
*
pkModeItemMargin
+
2*
pkModeC
ollectionMargin
<
UIView
.
fus_screenW
()
{
self
.
collectionViewLayout
?
.
scrollDirection
=
.
vertical
self
.
collectionViewLayout
?
.
scrollDirection
=
.
vertical
}
else
{
}
else
{
self
.
collectionViewLayout
?
.
scrollDirection
=
.
horizontal
self
.
collectionViewLayout
?
.
scrollDirection
=
.
horizontal
}
}
self
.
collectionViewLayout
?
.
minimumLineSpacing
=
self
.
pkModeItemMargin
self
.
collectionViewLayout
?
.
minimumInteritemSpacing
=
self
.
pkModeItemMargin
self
.
collectionViewLayout
?
.
sectionInset
=
UIEdgeInsets
(
top
:
0
,
left
:
pkModeCollectionMargin
,
bottom
:
0
,
right
:
pkModeCollectionMargin
)
self
.
collectionViewLayout
?
.
collectionCellAlignmentType
=
.
Center
}
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
}
}
}
}
extension
FFPKControlPKModeView
:
UICollectionViewDelegate
,
UICollectionViewDataSource
{
extension
FFPKControlPKModeView
:
UICollectionViewDelegate
,
UICollectionViewDataSource
,
UICollectionViewDelegateFlowLayout
{
func
numberOfSections
(
in
collectionView
:
UICollectionView
)
->
Int
{
func
numberOfSections
(
in
collectionView
:
UICollectionView
)
->
Int
{
return
1
return
1
}
}
...
@@ -172,6 +192,17 @@ extension FFPKControlPKModeView: UICollectionViewDelegate, UICollectionViewDataS
...
@@ -172,6 +192,17 @@ extension FFPKControlPKModeView: UICollectionViewDelegate, UICollectionViewDataS
}
}
return
.
init
()
return
.
init
()
}
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
collectionViewLayout
:
UICollectionViewLayout
,
sizeForItemAt
indexPath
:
IndexPath
)
->
CGSize
{
if
self
.
viewType
==
.
pkGamePlay
{
if
indexPath
.
row
==
0
{
return
CGSizeMake
(
gamePlayItemWidth
*
2
+
gamePlayItemMargin
,
134
)
}
return
CGSize
(
width
:
gamePlayItemWidth
,
height
:
100
)
}
else
{
return
CGSize
(
width
:
pkModeItemWidth
,
height
:
196
)
}
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
didSelectItemAt
indexPath
:
IndexPath
)
{
func
collectionView
(
_
collectionView
:
UICollectionView
,
didSelectItemAt
indexPath
:
IndexPath
)
{
self
.
currentSelect
=
indexPath
.
row
self
.
currentSelect
=
indexPath
.
row
collectionView
.
reloadData
()
collectionView
.
reloadData
()
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKControlView/FFPKControlSettingView.swift
View file @
e4e310c5
...
@@ -16,6 +16,7 @@ class FFPKControlSettingView: FFPKControlSubBaseView {
...
@@ -16,6 +16,7 @@ class FFPKControlSettingView: FFPKControlSubBaseView {
let
sectionColorView
=
UIView
()
let
sectionColorView
=
UIView
()
let
acceptPkView
=
FFPKControlSettingSwitchView
()
let
acceptPkView
=
FFPKControlSettingSwitchView
()
let
messageIntercommunicationView
=
FFPKControlSettingSwitchView
()
let
messageIntercommunicationView
=
FFPKControlSettingSwitchView
()
let
pkAnimationControlView
=
FFPKControlSettingSwitchView
()
// 数据
// 数据
var
acceptPk
:
Int
=
1
var
acceptPk
:
Int
=
1
...
@@ -61,10 +62,18 @@ class FFPKControlSettingView: FFPKControlSubBaseView {
...
@@ -61,10 +62,18 @@ class FFPKControlSettingView: FFPKControlSubBaseView {
messageIntercommunicationView
.
titleLabel
.
text
=
.
fus_versionLocalString
(
"公屏消息互通"
)
messageIntercommunicationView
.
titleLabel
.
text
=
.
fus_versionLocalString
(
"公屏消息互通"
)
sectionColorView
.
addSubview
(
messageIntercommunicationView
)
sectionColorView
.
addSubview
(
messageIntercommunicationView
)
messageIntercommunicationView
.
snp
.
makeConstraints
{
make
in
messageIntercommunicationView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
bottom
.
equalToSuperview
()
make
.
left
.
right
.
equalToSuperview
()
make
.
height
.
equalTo
(
62
)
make
.
height
.
equalTo
(
62
)
make
.
top
.
equalTo
(
acceptPkView
.
snp
.
bottom
)
make
.
top
.
equalTo
(
acceptPkView
.
snp
.
bottom
)
}
}
pkAnimationControlView
.
titleLabel
.
text
=
.
fus_versionLocalString
(
"关闭 PK 动效"
)
sectionColorView
.
addSubview
(
pkAnimationControlView
)
pkAnimationControlView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
bottom
.
equalToSuperview
()
make
.
height
.
equalTo
(
62
)
make
.
top
.
equalTo
(
messageIntercommunicationView
.
snp
.
bottom
)
}
}
}
override
func
bindViewModel
()
{
override
func
bindViewModel
()
{
...
@@ -107,6 +116,11 @@ class FFPKControlSettingView: FFPKControlSubBaseView {
...
@@ -107,6 +116,11 @@ class FFPKControlSettingView: FFPKControlSubBaseView {
})
})
.
disposed
(
by
:
disposeBag
)
.
disposed
(
by
:
disposeBag
)
self
.
pkAnimationControlView
.
switchControl
.
isOn
=
!
FFPKControlDataHelper
.
share
.
pkAnimationIsOn
.
value
self
.
pkAnimationControlView
.
switchDidClicked
=
{
isOn
in
FFPKControlDataHelper
.
share
.
pkAnimationIsOn
.
accept
(
!
isOn
)
}
}
}
override
func
ff_setupViewModel
()
{
override
func
ff_setupViewModel
()
{
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Features/NewLive/Main/View/FunctionView/PK/FUSPKNew/FUSView/FUSPKControlView/ViewModel/FFPKControlDataHelper.swift
View file @
e4e310c5
...
@@ -61,6 +61,9 @@ import SwiftyJSON
...
@@ -61,6 +61,9 @@ import SwiftyJSON
/// 惩罚列表
/// 惩罚列表
public
let
vsPunishList
:
BehaviorRelay
<
[
FFVSPunishGetListDataModel
]
>
=
.
init
(
value
:
.
init
())
public
let
vsPunishList
:
BehaviorRelay
<
[
FFVSPunishGetListDataModel
]
>
=
.
init
(
value
:
.
init
())
/// pk动画是否开启
public
let
pkAnimationIsOn
:
BehaviorRelay
<
Bool
>
=
.
init
(
value
:
true
)
/// 当前请求数据的语言
/// 当前请求数据的语言
private
var
baseDataLanguage
=
FUSLocalizationHelper
.
fus_currentLanguage
()
.
languageType
private
var
baseDataLanguage
=
FUSLocalizationHelper
.
fus_currentLanguage
()
.
languageType
...
@@ -82,6 +85,15 @@ import SwiftyJSON
...
@@ -82,6 +85,15 @@ import SwiftyJSON
})
})
.
disposed
(
by
:
disposeBag
)
.
disposed
(
by
:
disposeBag
)
let
pkAnimationIsOnValue
=
UserDefaults
.
standard
.
value
(
forKey
:
FUSShowRoomUDKeyStore
.
pkAnimationControlLocalStoreKey
)
??
true
self
.
pkAnimationIsOn
.
accept
(
true
)
self
.
pkAnimationIsOn
.
skip
(
1
)
.
distinctUntilChanged
()
.
subscribe
(
onNext
:
{
pkAnimationIsOn
in
UserDefaults
.
standard
.
setValue
(
pkAnimationIsOn
,
forKey
:
FUSShowRoomUDKeyStore
.
pkAnimationControlLocalStoreKey
)
})
.
disposed
(
by
:
disposeBag
)
}
}
...
...
Modules/FUSShowRoomModule/FUSShowRoomModule/Others/FUSShowRoomUDKeyStore.swift
0 → 100644
View file @
e4e310c5
//
// FUSShowRoomUDKeyStore.swift
// FUSShowRoomModule
//
// Created by aaa on 2026/2/28.
//
import
UIKit
@objc
public
class
FUSShowRoomUDKeyStore
:
NSObject
{
@objc
public
static
let
pkAnimationControlLocalStoreKey
:
String
=
"FUSShowRoomUDKeyStore_pkAnimationControlLocalStoreKey"
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment