Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
陈高翔
/
DreamSleep-iOS
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit dd728923
由
cgx
编写于
2022-07-16 15:47:50 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
滑块左右时间设置
1 个父辈
8e23981c
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
91 行增加
和
25 行删除
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/ReadyItemCell.h
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/ReadyItemCell.m
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/ReadyListController.m
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/RelaxItemsView.m
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/SleepReadyRequestModel.m
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/ReadyItemCell.h
查看文件 @
dd72892
...
...
@@ -22,6 +22,8 @@ typedef NS_ENUM(NSInteger, ItemCellType) {
-
(
instancetype
)
initWithFrame
:(
CGRect
)
frame
itemCellType
:(
ItemCellType
)
type
;
-
(
void
)
adjustTime
;
@end
NS_ASSUME_NONNULL_END
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/ReadyItemCell.m
查看文件 @
dd72892
...
...
@@ -40,6 +40,10 @@
self
.
timeLab
.
text
=
[
NSString
stringWithFormat
:
@"%dmin"
,
item
.
time
];
}
-
(
void
)
adjustTime
{
self
.
timeLab
.
text
=
[
NSString
stringWithFormat
:
@"%dmin"
,
self
.
item
.
time
];
}
#pragma mark - lazy
-
(
UIImageView
*
)
icon
{
if
(
!
_icon
)
{
...
...
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/ReadyListController.m
查看文件 @
dd72892
...
...
@@ -105,6 +105,9 @@
}
else
if
(
indexPath
.
row
==
1
)
{
// 添加
[
self
.
relaxItemsView
addItem
:
item
];
}
else
if
(
indexPath
.
row
==
2
)
{
// 添加
[
self
.
relaxItemsView
addItem
:
item
];
}
}
...
...
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/RelaxItemsView.m
查看文件 @
dd72892
...
...
@@ -31,6 +31,8 @@
CGFloat
_itemBottomMargin
;
CGFloat
_markerBottomMargin
;
int
_relax_time
;
int
_min_time
;
int
_left_right_total_time
;
}
-
(
instancetype
)
initWithFrame
:
(
CGRect
)
frame
{
...
...
@@ -47,6 +49,7 @@
_topMargin
=
24
.
0
;
_itemBottomMargin
=
47
.
0
;
_markerBottomMargin
=
19
.
0
;
_min_time
=
5
;
self
.
dk_backgroundColorPicker
=
DKColorPickerWithKey
(
TabBarBG
);
[
self
cornerRadius
:
24
.
0
];
...
...
@@ -125,6 +128,8 @@
self
.
timeWidths
[
index
]
=
@
(
divideTimeW
);
ReadyItem
*
item
=
self
.
relax_items
[
index
];
item
.
time
=
divideTime
;
ReadyItemCell
*
itemCell
=
self
.
itemCells
[
index
];
itemCell
.
item
=
item
;
}
// 根据时长动态调整itemCell和marker位置
CGFloat
leftAllTimeW1
=
0
;
...
...
@@ -209,6 +214,8 @@
// 根据滑块索引获取左右2个itemCell
self
.
leftItemCell
=
self
.
itemCells
[
index
];
self
.
rightItemCell
=
self
.
itemCells
[
index
+
1
];
// 左右itemCell总时长
_left_right_total_time
=
self
.
leftItemCell
.
item
.
time
+
self
.
rightItemCell
.
item
.
time
;
}
-
(
void
)
moveMarkerWithTranslationX
:
(
CGFloat
)
translationX
{
...
...
@@ -218,37 +225,87 @@
CGFloat
max
=
0
;
// 偏差值
CGFloat
error
=
0
;
// 当前滑块最新中心坐标位置
CGFloat
curX
=
self
.
curMarker
.
centerX
+
translationX
;
// 右cell中心间距
CGFloat
rightCellMiddle
=
0
;
CGFloat
leftItemCellCenterX
=
0
;
// 左右itemCell区域总长度
CGFloat
left_right_total_line_w
=
0
;
// 左itemCell区域长度
CGFloat
left_line_w
=
0
;
// 左itemCell区域临界值
CGFloat
left_min_margin
=
0
;
if
(
self
.
curMarkerIndex
==
0
)
{
// 2个或者3个item,处理最开始2个item
// 没有左滑块,没有右滑块,2个itemCell
if
(
self
.
markers
.
count
==
1
)
{
min
=
_lineMargin
+
_markerW
+
error
;
if
(
self
.
markers
.
count
==
2
)
{
// 3个item
// 拿到当前滑块右边1个滑块
ReadyTimeMarker
*
rightMarker
=
self
.
markers
[
self
.
curMarkerIndex
+
1
];
max
=
rightMarker
.
centerX
-
_markerW
-
error
;
if
(
self
.
curMarker
.
centerX
+
translationX
>
min
&&
self
.
curMarker
.
centerX
+
translationX
<
max
)
{
self
.
curMarker
.
centerX
=
self
.
curMarker
.
centerX
+
translationX
;
self
.
leftItemCell
.
centerX
=
_lineMargin
+
(
self
.
curMarker
.
centerX
-
_lineMargin
)
/
2
.
0
;
self
.
rightItemCell
.
centerX
=
self
.
curMarker
.
centerX
+
(
rightMarker
.
centerX
-
self
.
curMarker
.
centerX
)
/
2
.
0
;
}
}
else
{
// 2个item
max
=
_lineW
-
_markerW
+
_lineMargin
-
error
;
if
(
self
.
curMarker
.
centerX
+
translationX
>
min
&&
self
.
curMarker
.
centerX
+
translationX
<
max
)
{
self
.
curMarker
.
centerX
=
self
.
curMarker
.
centerX
+
translationX
;
self
.
leftItemCell
.
centerX
=
_lineMargin
+
(
self
.
curMarker
.
centerX
-
_lineMargin
)
/
2
.
0
;
self
.
rightItemCell
.
centerX
=
self
.
curMarker
.
centerX
+
(
2
*
self
.
divideW
-
self
.
curMarker
.
centerX
+
_lineMargin
)
/
2
.
0
;
}
}
}
else
if
(
self
.
curMarkerIndex
==
1
)
{
// 3个item,处理最后2个item
// 拿到当前滑块左边1个滑块
max
=
_lineW
+
_lineMargin
-
_markerW
+
-
error
;
rightCellMiddle
=
(
_lineW
+
_lineMargin
-
self
.
curMarker
.
centerX
)
/
2
.
0
;
leftItemCellCenterX
=
_lineMargin
+
(
self
.
curMarker
.
centerX
-
_lineMargin
)
/
2
.
0
;
left_right_total_line_w
=
_lineW
-
2
*
_markerW
;
left_line_w
=
self
.
curMarker
.
centerX
-
_lineMargin
-
_markerW
;
left_min_margin
=
self
.
curMarker
.
centerX
-
_lineMargin
;
}
else
if
(
self
.
curMarkerIndex
==
0
&&
self
.
markers
.
count
>
1
)
{
// 没有左滑块,有右滑块
ReadyTimeMarker
*
rightMarker
=
self
.
markers
[
self
.
curMarkerIndex
+
1
];
min
=
_lineMargin
+
_markerW
+
error
;
max
=
rightMarker
.
centerX
-
_markerW
-
error
;
rightCellMiddle
=
(
rightMarker
.
centerX
-
self
.
curMarker
.
centerX
)
/
2
.
0
;
leftItemCellCenterX
=
_lineMargin
+
(
self
.
curMarker
.
centerX
-
_lineMargin
)
/
2
.
0
;
left_right_total_line_w
=
rightMarker
.
centerX
-
_lineMargin
-
2
*
_markerW
;
left_line_w
=
self
.
curMarker
.
centerX
-
_lineMargin
-
_markerW
;
left_min_margin
=
self
.
curMarker
.
centerX
-
_lineMargin
;
}
else
if
(
self
.
curMarkerIndex
==
self
.
markers
.
count
-
1
&&
self
.
markers
.
count
>
1
)
{
// 有左滑块,没有右滑块
ReadyTimeMarker
*
leftMarker
=
self
.
markers
[
self
.
curMarkerIndex
-
1
];
min
=
leftMarker
.
centerX
+
_markerW
+
error
;
max
=
_lineW
-
_markerW
+
_lineMargin
-
error
;
if
(
self
.
curMarker
.
centerX
+
translationX
>
min
&&
self
.
curMarker
.
centerX
+
translationX
<
max
)
{
self
.
curMarker
.
centerX
=
self
.
curMarker
.
centerX
+
translationX
;
self
.
leftItemCell
.
centerX
=
leftMarker
.
centerX
+
(
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
)
/
2
.
0
;
self
.
rightItemCell
.
centerX
=
self
.
curMarker
.
centerX
+
(
3
*
self
.
divideW
-
self
.
curMarker
.
centerX
+
_lineMargin
)
/
2
.
0
;
rightCellMiddle
=
(
_lineW
+
_lineMargin
-
self
.
curMarker
.
centerX
)
/
2
.
0
;
leftItemCellCenterX
=
leftMarker
.
centerX
+
(
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
)
/
2
.
0
;
left_right_total_line_w
=
_lineW
-
leftMarker
.
centerX
+
_lineMargin
-
2
*
_markerW
;
left_line_w
=
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
-
_markerW
;
left_min_margin
=
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
;
}
else
{
// 有左滑块,有右滑块(实际业务最多只有2个滑块,此处是扩展多个)
ReadyTimeMarker
*
leftMarker
=
self
.
markers
[
self
.
curMarkerIndex
-
1
];
ReadyTimeMarker
*
rightMarker
=
self
.
markers
[
self
.
curMarkerIndex
+
1
];
min
=
leftMarker
.
centerX
+
_markerW
+
error
;
max
=
rightMarker
.
centerX
-
_markerW
-
error
;
rightCellMiddle
=
(
rightMarker
.
centerX
-
self
.
curMarker
.
centerX
)
/
2
.
0
;
leftItemCellCenterX
=
leftMarker
.
centerX
+
(
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
)
/
2
.
0
;
if
(
curX
>
min
&&
curX
<
max
)
{
self
.
curMarker
.
centerX
=
curX
;
self
.
leftItemCell
.
centerX
=
leftItemCellCenterX
;
self
.
rightItemCell
.
centerX
=
self
.
curMarker
.
centerX
+
rightCellMiddle
;
}
// 后台传过来的总时间需要动态调整适配
left_right_total_line_w
=
rightMarker
.
centerX
-
leftMarker
.
centerX
-
2
*
_markerW
;
left_line_w
=
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
-
_markerW
;
left_min_margin
=
self
.
curMarker
.
centerX
-
leftMarker
.
centerX
;
}
// 调整当前滑块及其左右itemCell中心位置
if
(
curX
>
min
&&
curX
<
max
)
{
self
.
curMarker
.
centerX
=
curX
;
self
.
leftItemCell
.
centerX
=
leftItemCellCenterX
;
self
.
rightItemCell
.
centerX
=
self
.
curMarker
.
centerX
+
rightCellMiddle
;
}
// 调整当前滑块左右itemCell时长
int
leftTime
=
(
_left_right_total_time
-
2
*
_min_time
)
*
left_line_w
/
left_right_total_line_w
+
1
;
// 划到最左边处理临界值
if
((
int
)
left_min_margin
==
_markerW
)
{
leftTime
=
0
;
}
self
.
leftItemCell
.
item
.
time
=
_min_time
+
leftTime
;
[
self
.
leftItemCell
adjustTime
];
self
.
rightItemCell
.
item
.
time
=
_min_time
+
(
_left_right_total_time
-
2
*
_min_time
)
-
leftTime
;
[
self
.
rightItemCell
adjustTime
];
}
#pragma mark - getter
...
...
DreamSleep/DreamSleep/Class/AISleepModule/SleepReady/SleepReadyRequestModel.m
查看文件 @
dd72892
...
...
@@ -9,7 +9,7 @@
#import "ReadyItem.h"
@implementation
SleepReadyRequestModel
// user_setup_prepare_items、user_setup_prepare_peace_status
+
(
NSURLSessionDataTask
*
)
queryPreparePeaceListWithCompletion
:(
void
(
^
)(
SleepReadyRequestModel
*
requestModel
))
completion
{
SleepReadyRequestModel
*
requestModel
=
[[
SleepReadyRequestModel
alloc
]
init
];
NSString
*
api
=
@"query_prepare_peace_list"
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论