Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
68aabe60
Commit
68aabe60
authored
Dec 30, 2024
by
Alex朱枝文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
直播间手势控制消息列表显示与隐藏
parent
8189e63d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
187 additions
and
1 deletion
+187
-1
YHLivePlayerViewController.swift
.../LivestreamSales(直播销售)/C/YHLivePlayerViewController.swift
+142
-0
YHPlayerTopBarView.swift
.../Modules/LivestreamSales(直播销售)/V/YHPlayerTopBarView.swift
+1
-1
Contents.json
...assets/YinHeLive/live_message_hide.imageset/Contents.json
+22
-0
live_message_hide@2x.png
...eLive/live_message_hide.imageset/live_message_hide@2x.png
+0
-0
live_message_hide@3x.png
...eLive/live_message_hide.imageset/live_message_hide@3x.png
+0
-0
Contents.json
...assets/YinHeLive/live_message_show.imageset/Contents.json
+22
-0
live_message_show@2x.png
...eLive/live_message_show.imageset/live_message_show@2x.png
+0
-0
live_message_show@3x.png
...eLive/live_message_show.imageset/live_message_show@3x.png
+0
-0
No files found.
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/C/YHLivePlayerViewController.swift
View file @
68aabe60
...
@@ -31,6 +31,9 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
...
@@ -31,6 +31,9 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
private
let
timeCount
:
Int
=
120
private
let
timeCount
:
Int
=
120
// 进聊天室尝试次数
// 进聊天室尝试次数
private
let
maxRetryCount
=
3
private
let
maxRetryCount
=
3
// 手势初始状态记录
private
var
originalX
:
CGFloat
=
0
private
var
isMessageListHidden
=
false
// MARK: - UI Components
// MARK: - UI Components
...
@@ -95,6 +98,23 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
...
@@ -95,6 +98,23 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
let
imageView
=
UIImageView
(
image
:
UIImage
(
named
:
"live_player_bg"
))
let
imageView
=
UIImageView
(
image
:
UIImage
(
named
:
"live_player_bg"
))
return
imageView
return
imageView
}()
}()
private
lazy
var
messageListStateButton
:
UIButton
=
{
let
button
=
UIButton
(
type
:
.
custom
)
button
.
setImage
(
UIImage
(
named
:
"live_message_show"
),
for
:
.
selected
)
button
.
setImage
(
UIImage
(
named
:
"live_message_hide"
),
for
:
.
normal
)
button
.
addTarget
(
self
,
action
:
#selector(
messageListStateButtonClicked(_:)
)
,
for
:
.
touchUpInside
)
return
button
}()
private
lazy
var
closeButton
:
UIButton
=
{
let
button
=
UIButton
(
type
:
.
custom
)
button
.
isHidden
=
true
button
.
setImage
(
UIImage
(
named
:
"live_room_close"
),
for
:
.
normal
)
button
.
addTarget
(
self
,
action
:
#selector(
closeButtonClicked
)
,
for
:
.
touchUpInside
)
button
.
contentEdgeInsets
=
UIEdgeInsets
(
top
:
4
,
left
:
4
,
bottom
:
4
,
right
:
4
)
return
button
}()
// MARK: - Initialization
// MARK: - Initialization
...
@@ -167,6 +187,8 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
...
@@ -167,6 +187,8 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
//playerView.addSubview(blurredView)
//playerView.addSubview(blurredView)
containerView
.
addSubview
(
bottomInputBar
)
containerView
.
addSubview
(
bottomInputBar
)
containerView
.
addSubview
(
messageListView
)
containerView
.
addSubview
(
messageListView
)
containerView
.
addSubview
(
messageListStateButton
)
containerView
.
addSubview
(
closeButton
)
bottomImageView
.
snp
.
makeConstraints
{
make
in
bottomImageView
.
snp
.
makeConstraints
{
make
in
make
.
edges
.
equalToSuperview
()
make
.
edges
.
equalToSuperview
()
}
}
...
@@ -181,6 +203,18 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
...
@@ -181,6 +203,18 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
make
.
bottom
.
equalTo
(
bottomInputBar
.
snp
.
top
)
.
offset
(
-
14
)
make
.
bottom
.
equalTo
(
bottomInputBar
.
snp
.
top
)
.
offset
(
-
14
)
make
.
height
.
width
.
equalTo
(
listMaxWidth
)
make
.
height
.
width
.
equalTo
(
listMaxWidth
)
}
}
messageListStateButton
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalToSuperview
()
.
offset
(
-
16
)
make
.
bottom
.
equalTo
(
bottomInputBar
.
snp
.
top
)
.
offset
(
-
10
)
make
.
height
.
width
.
equalTo
(
44
)
}
closeButton
.
snp
.
makeConstraints
{
make
in
make
.
centerY
.
equalTo
(
topBarView
.
headPortrait
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
12
)
make
.
width
.
height
.
equalTo
(
32
)
}
topBarView
.
closeButtonClickEvent
=
{
[
weak
self
]
in
topBarView
.
closeButtonClickEvent
=
{
[
weak
self
]
in
self
?
.
closeLive
()
self
?
.
closeLive
()
...
@@ -221,6 +255,12 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
...
@@ -221,6 +255,12 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
make
.
width
.
equalTo
(
300
)
make
.
width
.
equalTo
(
300
)
}
}
#endif
#endif
// 保存初始位置
originalX
=
messageListView
.
frame
.
origin
.
x
// 添加拖拽手势
let
panGesture
=
UIPanGestureRecognizer
(
target
:
self
,
action
:
#selector(
handlePanGesture(_:)
)
)
view
.
addGestureRecognizer
(
panGesture
)
}
}
private
func
setupStateViewController
()
{
private
func
setupStateViewController
()
{
...
@@ -701,6 +741,14 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
...
@@ -701,6 +741,14 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
quitChatRoom
()
quitChatRoom
()
}
}
@objc
private
func
messageListStateButtonClicked
(
_
button
:
UIButton
)
{
if
isMessageListHidden
{
showWithAnimation
()
}
else
{
hideWithAnimation
()
}
}
/// 设置定时器
/// 设置定时器
private
func
setupTimer
()
{
private
func
setupTimer
()
{
timer
=
DispatchSource
.
makeTimerSource
(
queue
:
.
main
)
timer
=
DispatchSource
.
makeTimerSource
(
queue
:
.
main
)
...
@@ -839,3 +887,97 @@ extension YHLivePlayerViewController {
...
@@ -839,3 +887,97 @@ extension YHLivePlayerViewController {
}
}
*/
*/
}
}
extension
YHLivePlayerViewController
{
// MARK: - Gesture Handling
@objc
private
func
closeButtonClicked
()
{
closeLive
()
}
@objc
private
func
handlePanGesture
(
_
gesture
:
UIPanGestureRecognizer
)
{
let
translation
=
gesture
.
translation
(
in
:
view
)
switch
gesture
.
state
{
case
.
began
:
break
case
.
changed
:
if
isMessageListHidden
{
// 隐藏状态下,只允许向左拖拽显示
if
translation
.
x
<=
0
{
// 计算新位置(从隐藏位置向左拖)
let
newX
=
(
originalX
+
view
.
frame
.
width
)
+
translation
.
x
// 限制不能拖过原始位置
messageListView
.
frame
.
origin
.
x
=
max
(
originalX
,
newX
)
topBarView
.
frame
.
origin
.
x
=
max
(
originalX
,
newX
)
bottomInputBar
.
frame
.
origin
.
x
=
max
(
originalX
,
newX
)
}
}
else
{
// 显示状态下,只允许向右拖拽隐藏
if
translation
.
x
>=
0
{
// 计算新位置(从原始位置向右拖)
let
newX
=
originalX
+
translation
.
x
// 限制最大拖拽距离
messageListView
.
frame
.
origin
.
x
=
min
(
originalX
+
view
.
frame
.
width
,
newX
)
topBarView
.
frame
.
origin
.
x
=
min
(
originalX
+
view
.
frame
.
width
,
newX
)
bottomInputBar
.
frame
.
origin
.
x
=
min
(
originalX
+
view
.
frame
.
width
,
newX
)
}
}
case
.
ended
,
.
cancelled
:
let
velocity
=
gesture
.
velocity
(
in
:
view
)
let
translation
=
gesture
.
translation
(
in
:
view
)
if
isMessageListHidden
{
// 当前是隐藏状态,判断是否需要显示
if
velocity
.
x
<
-
500
||
translation
.
x
<
-
view
.
frame
.
width
/
3
{
// 向左速度够快或拖动距离够大,显示
showWithAnimation
()
}
else
{
// 保持隐藏
hideWithAnimation
()
}
}
else
{
// 当前是显示状态,判断是否需要隐藏
if
velocity
.
x
>
500
||
translation
.
x
>
view
.
frame
.
width
/
3
{
// 向右速度够快或拖动距离够大,隐藏
hideWithAnimation
()
}
else
{
// 保持显示
showWithAnimation
()
}
}
default
:
break
}
}
private
func
hideWithAnimation
()
{
isMessageListHidden
=
true
messageListStateButton
.
isSelected
=
true
UIView
.
animate
(
withDuration
:
0.3
,
delay
:
0
,
options
:
.
curveEaseOut
)
{
self
.
messageListView
.
frame
.
origin
.
x
=
self
.
originalX
+
self
.
view
.
frame
.
width
self
.
topBarView
.
frame
.
origin
.
x
=
self
.
originalX
+
self
.
view
.
frame
.
width
self
.
bottomInputBar
.
frame
.
origin
.
x
=
self
.
originalX
+
self
.
view
.
frame
.
width
self
.
closeButton
.
isHidden
=
false
}
}
private
func
showWithAnimation
()
{
isMessageListHidden
=
false
messageListStateButton
.
isSelected
=
false
UIView
.
animate
(
withDuration
:
0.3
,
delay
:
0
,
options
:
.
curveEaseOut
)
{
self
.
messageListView
.
frame
.
origin
.
x
=
self
.
originalX
self
.
topBarView
.
frame
.
origin
.
x
=
self
.
originalX
self
.
bottomInputBar
.
frame
.
origin
.
x
=
self
.
originalX
self
.
closeButton
.
isHidden
=
true
}
}
}
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/V/YHPlayerTopBarView.swift
View file @
68aabe60
...
@@ -23,7 +23,7 @@ class YHPlayerTopBarView: UIView {
...
@@ -23,7 +23,7 @@ class YHPlayerTopBarView: UIView {
return
view
return
view
}()
}()
private
lazy
var
headPortrait
:
UIImageView
=
{
lazy
var
headPortrait
:
UIImageView
=
{
let
view
=
UIImageView
()
let
view
=
UIImageView
()
view
.
layer
.
cornerRadius
=
headerWidth
/
2.0
view
.
layer
.
cornerRadius
=
headerWidth
/
2.0
view
.
clipsToBounds
=
true
view
.
clipsToBounds
=
true
...
...
galaxy/galaxy/Res/Assets.xcassets/YinHeLive/live_message_hide.imageset/Contents.json
0 → 100644
View file @
68aabe60
{
"images"
:
[
{
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"live_message_hide@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"live_message_hide@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/YinHeLive/live_message_hide.imageset/live_message_hide@2x.png
0 → 100644
View file @
68aabe60
1.59 KB
galaxy/galaxy/Res/Assets.xcassets/YinHeLive/live_message_hide.imageset/live_message_hide@3x.png
0 → 100644
View file @
68aabe60
2.47 KB
galaxy/galaxy/Res/Assets.xcassets/YinHeLive/live_message_show.imageset/Contents.json
0 → 100644
View file @
68aabe60
{
"images"
:
[
{
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"live_message_show@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"live_message_show@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/YinHeLive/live_message_show.imageset/live_message_show@2x.png
0 → 100644
View file @
68aabe60
1.67 KB
galaxy/galaxy/Res/Assets.xcassets/YinHeLive/live_message_show.imageset/live_message_show@3x.png
0 → 100644
View file @
68aabe60
2.59 KB
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