Commit dd728923 cgx

滑块左右时间设置

1 个父辈 8e23981c
......@@ -22,6 +22,8 @@ typedef NS_ENUM(NSInteger, ItemCellType) {
- (instancetype)initWithFrame:(CGRect)frame itemCellType:(ItemCellType)type;
- (void)adjustTime;
@end
NS_ASSUME_NONNULL_END
......@@ -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) {
......
......@@ -105,6 +105,9 @@
} else if (indexPath.row == 1) {
// 添加
[self.relaxItemsView addItem:item];
} else if (indexPath.row == 2) {
// 添加
[self.relaxItemsView addItem:item];
}
}
......
......@@ -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
......
......@@ -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!