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
99fd4f3f
Commit
99fd4f3f
authored
Jul 26, 2024
by
Steven杜宇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
// 生活详情
parent
7a14cb57
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
43 deletions
+58
-43
YHLifeDetailViewController.swift
...ules/Home(首页)/Life(生活)/C/YHLifeDetailViewController.swift
+58
-43
No files found.
galaxy/galaxy/Classes/Modules/Home(首页)/Life(生活)/C/YHLifeDetailViewController.swift
View file @
99fd4f3f
...
@@ -129,7 +129,7 @@ class YHLifeDetailViewController: YHBaseViewController {
...
@@ -129,7 +129,7 @@ class YHLifeDetailViewController: YHBaseViewController {
imgView
.
image
=
UIImage
(
named
:
"global_default_image"
)
imgView
.
image
=
UIImage
(
named
:
"global_default_image"
)
return
imgView
return
imgView
}()
}()
lazy
var
segmentedView
:
JXSegmentedView
=
{
lazy
var
segmentedView
:
JXSegmentedView
=
{
let
segmentedView
=
JXSegmentedView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
44
))
let
segmentedView
=
JXSegmentedView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
44
))
segmentedView
.
delegate
=
self
segmentedView
.
delegate
=
self
...
@@ -231,6 +231,13 @@ class YHLifeDetailViewController: YHBaseViewController {
...
@@ -231,6 +231,13 @@ class YHLifeDetailViewController: YHBaseViewController {
make
.
top
.
equalTo
(
self
.
topSegmentedView
.
snp
.
bottom
)
make
.
top
.
equalTo
(
self
.
topSegmentedView
.
snp
.
bottom
)
}
}
}
}
override
func
viewDidLayoutSubviews
()
{
super
.
viewDidLayoutSubviews
()
if
self
.
tableView
.
contentSize
!=
self
.
fakeTableView
.
contentSize
{
self
.
tableView
.
contentSize
=
self
.
fakeTableView
.
contentSize
}
}
}
}
extension
YHLifeDetailViewController
:
JXSegmentedViewDelegate
{
extension
YHLifeDetailViewController
:
JXSegmentedViewDelegate
{
...
@@ -240,6 +247,7 @@ extension YHLifeDetailViewController: JXSegmentedViewDelegate {
...
@@ -240,6 +247,7 @@ extension YHLifeDetailViewController: JXSegmentedViewDelegate {
if
segmentedView
==
self
.
topSegmentedView
{
if
segmentedView
==
self
.
topSegmentedView
{
self
.
segmentedView
.
defaultSelectedIndex
=
index
self
.
segmentedView
.
defaultSelectedIndex
=
index
self
.
segmentedView
.
reloadDataWithoutListContainer
()
self
.
segmentedView
.
reloadDataWithoutListContainer
()
}
else
{
}
else
{
self
.
topSegmentedView
.
defaultSelectedIndex
=
index
self
.
topSegmentedView
.
defaultSelectedIndex
=
index
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
...
@@ -247,9 +255,9 @@ extension YHLifeDetailViewController: JXSegmentedViewDelegate {
...
@@ -247,9 +255,9 @@ extension YHLifeDetailViewController: JXSegmentedViewDelegate {
if
0
<=
index
,
index
<
self
.
imgItems
.
count
{
if
0
<=
index
,
index
<
self
.
imgItems
.
count
{
self
.
fakeTableView
.
scrollToRow
(
at
:
IndexPath
(
row
:
index
,
section
:
0
),
at
:
.
top
,
animated
:
true
)
self
.
fakeTableView
.
scrollToRow
(
at
:
IndexPath
(
row
:
index
,
section
:
0
),
at
:
.
top
,
animated
:
true
)
let
rect
=
self
.
fakeTableView
.
rectForRow
(
at
:
IndexPath
(
row
:
index
,
section
:
0
))
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.3
,
execute
:
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.2
,
execute
:
{
let
rect
=
self
.
fakeTableView
.
rectForRow
(
at
:
IndexPath
(
row
:
index
,
section
:
0
))
var
y
=
rect
.
origin
.
y
-
k_Height_NavigationtBarAndStatuBar
-
45.0
var
y
=
rect
.
origin
.
y
-
k_Height_NavigationtBarAndStatuBar
-
45.0
+
2.0
if
y
>
self
.
fakeTableView
.
contentSize
.
height
-
self
.
fakeTableView
.
height
{
if
y
>
self
.
fakeTableView
.
contentSize
.
height
-
self
.
fakeTableView
.
height
{
y
=
self
.
fakeTableView
.
contentSize
.
height
-
self
.
fakeTableView
.
height
y
=
self
.
fakeTableView
.
contentSize
.
height
-
self
.
fakeTableView
.
height
}
}
...
@@ -273,31 +281,57 @@ extension YHLifeDetailViewController: UIScrollViewDelegate {
...
@@ -273,31 +281,57 @@ extension YHLifeDetailViewController: UIScrollViewDelegate {
topSegmentedView
.
isHidden
=
true
topSegmentedView
.
isHidden
=
true
topLine
.
isHidden
=
true
topLine
.
isHidden
=
true
}
}
var
find
=
false
}
func
scrollViewDidEndDecelerating
(
_
scrollView
:
UIScrollView
)
{
if
scrollView
==
self
.
fakeTableView
{
return
}
self
.
updateSelectIndex
(
scrollView
)
}
func
scrollViewDidEndDragging
(
_
scrollView
:
UIScrollView
,
willDecelerate
decelerate
:
Bool
)
{
if
scrollView
==
self
.
fakeTableView
{
return
}
self
.
updateSelectIndex
(
scrollView
)
}
func
updateSelectIndex
(
_
scrollView
:
UIScrollView
)
{
var
selectIndex
=
-
1
if
self
.
imgItems
.
count
>
0
{
if
self
.
imgItems
.
count
>
0
{
for
index
in
0
..<
self
.
imgItems
.
count
{
for
index
in
0
..<
self
.
imgItems
.
count
{
let
rect
=
self
.
tableView
.
rectForRow
(
at
:
IndexPath
(
row
:
index
,
section
:
0
))
let
rect
=
self
.
tableView
.
rectForRow
(
at
:
IndexPath
(
row
:
index
,
section
:
0
))
//
section 到顶部选择tab的距离
//
row 到顶部选择tab的距离 row 在tab下方 距离为证, row 在tab上方 距离为负
let
y
=
rect
.
origin
.
y
-
k_Height_NavigationtBarAndStatuBar
-
45.0
-
self
.
tableView
.
contentOffset
.
y
let
y
=
rect
.
origin
.
y
-
k_Height_NavigationtBarAndStatuBar
-
45.0
-
self
.
tableView
.
contentOffset
.
y
if
0.0
<=
y
,
y
<
self
.
tableView
.
height
-
k_Height_NavigationtBarAndStatuBar
-
45.0
{
find
=
true
if
y
>
-
rect
.
size
.
height
{
self
.
topSegmentedView
.
defaultSelectedIndex
=
index
selectIndex
=
index
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
self
.
segmentedView
.
defaultSelectedIndex
=
index
self
.
segmentedView
.
reloadDataWithoutListContainer
()
break
break
}
}
}
}
}
}
// section 没有在可见区域出现
// section 没有在可见区域出现
if
!
find
{
if
selectIndex
<
0
{
if
let
arr
=
self
.
tableView
.
indexPathsForVisibleRows
,
let
lastIndexPath
=
arr
.
last
{
if
let
arr
=
self
.
tableView
.
indexPathsForVisibleRows
,
let
lastIndexPath
=
arr
.
last
{
self
.
topSegmentedView
.
defaultSelectedIndex
=
lastIndexPath
.
row
selectIndex
=
lastIndexPath
.
row
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
}
self
.
segmentedView
.
defaultSelectedIndex
=
lastIndexPath
.
row
}
else
{
self
.
segmentedView
.
reloadDataWithoutListContainer
()
if
self
.
imgItems
.
count
>=
2
{
let
gap
=
self
.
tableView
.
contentSize
.
height
-
self
.
tableView
.
contentOffset
.
y
if
selectIndex
==
self
.
imgItems
.
count
-
2
,
self
.
tableView
.
height
-
1.0
<=
gap
,
gap
<=
self
.
tableView
.
height
+
1.0
{
// 滑动到底部需要定位到最后一个index
selectIndex
=
self
.
imgItems
.
count
-
1
}
}
}
}
}
self
.
topSegmentedView
.
defaultSelectedIndex
=
selectIndex
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
self
.
segmentedView
.
defaultSelectedIndex
=
selectIndex
self
.
segmentedView
.
reloadDataWithoutListContainer
()
}
}
}
}
...
@@ -329,7 +363,7 @@ extension YHLifeDetailViewController: UITableViewDataSource, UITableViewDelegate
...
@@ -329,7 +363,7 @@ extension YHLifeDetailViewController: UITableViewDataSource, UITableViewDelegate
}
}
func
tableView
(
_
tableView
:
UITableView
,
heightForFooterInSection
section
:
Int
)
->
CGFloat
{
func
tableView
(
_
tableView
:
UITableView
,
heightForFooterInSection
section
:
Int
)
->
CGFloat
{
return
KScreenHeight
/
3.0
return
0.01
}
}
func
tableView
(
_
tableView
:
UITableView
,
viewForHeaderInSection
section
:
Int
)
->
UIView
?
{
func
tableView
(
_
tableView
:
UITableView
,
viewForHeaderInSection
section
:
Int
)
->
UIView
?
{
...
@@ -339,30 +373,6 @@ extension YHLifeDetailViewController: UITableViewDataSource, UITableViewDelegate
...
@@ -339,30 +373,6 @@ extension YHLifeDetailViewController: UITableViewDataSource, UITableViewDelegate
func
tableView
(
_
tableView
:
UITableView
,
viewForFooterInSection
section
:
Int
)
->
UIView
?
{
func
tableView
(
_
tableView
:
UITableView
,
viewForFooterInSection
section
:
Int
)
->
UIView
?
{
return
UIView
()
return
UIView
()
}
}
func
tableView
(
_
tableView
:
UITableView
,
willDisplay
cell
:
UITableViewCell
,
forRowAt
indexPath
:
IndexPath
)
{
if
tableView
==
self
.
fakeTableView
{
return
}
if
0
<=
indexPath
.
row
,
indexPath
.
row
<
self
.
imgItems
.
count
{
self
.
segmentedView
.
defaultSelectedIndex
=
indexPath
.
row
self
.
segmentedView
.
reloadDataWithoutListContainer
()
self
.
topSegmentedView
.
defaultSelectedIndex
=
indexPath
.
row
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
}
}
func
tableView
(
_
tableView
:
UITableView
,
didEndDisplaying
cell
:
UITableViewCell
,
forRowAt
indexPath
:
IndexPath
)
{
if
tableView
==
self
.
fakeTableView
{
return
}
if
0
<=
indexPath
.
row
-
1
,
indexPath
.
row
-
1
<
self
.
imgItems
.
count
{
self
.
segmentedView
.
defaultSelectedIndex
=
indexPath
.
row
-
1
self
.
segmentedView
.
reloadDataWithoutListContainer
()
self
.
topSegmentedView
.
defaultSelectedIndex
=
indexPath
.
row
-
1
self
.
topSegmentedView
.
reloadDataWithoutListContainer
()
}
}
}
}
extension
YHLifeDetailViewController
{
extension
YHLifeDetailViewController
{
...
@@ -435,7 +445,12 @@ extension YHLifeDetailViewController {
...
@@ -435,7 +445,12 @@ extension YHLifeDetailViewController {
ossGroup
.
notify
(
queue
:
.
main
)
{
ossGroup
.
notify
(
queue
:
.
main
)
{
self
.
tableView
.
reloadData
()
self
.
tableView
.
reloadData
()
self
.
fakeTableView
.
reloadData
()
self
.
fakeTableView
.
reloadData
{
self
.
fakeTableView
.
setContentOffset
(
.
zero
,
animated
:
false
)
self
.
fakeTableView
.
scrollToRow
(
at
:
IndexPath
(
row
:
self
.
imgItems
.
count
-
1
,
section
:
0
),
at
:
.
top
,
animated
:
true
)
self
.
view
.
setNeedsLayout
()
self
.
view
.
layoutIfNeeded
()
}
}
}
}
}
}
}
...
...
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