Commit dd728923 cgx

滑块左右时间设置

1 个父辈 8e23981c
...@@ -22,6 +22,8 @@ typedef NS_ENUM(NSInteger, ItemCellType) { ...@@ -22,6 +22,8 @@ typedef NS_ENUM(NSInteger, ItemCellType) {
- (instancetype)initWithFrame:(CGRect)frame itemCellType:(ItemCellType)type; - (instancetype)initWithFrame:(CGRect)frame itemCellType:(ItemCellType)type;
- (void)adjustTime;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -40,6 +40,10 @@ ...@@ -40,6 +40,10 @@
self.timeLab.text = [NSString stringWithFormat:@"%dmin", item.time]; self.timeLab.text = [NSString stringWithFormat:@"%dmin", item.time];
} }
- (void)adjustTime {
self.timeLab.text = [NSString stringWithFormat:@"%dmin", self.item.time];
}
#pragma mark - lazy #pragma mark - lazy
- (UIImageView *)icon { - (UIImageView *)icon {
if (!_icon) { if (!_icon) {
......
...@@ -105,6 +105,9 @@ ...@@ -105,6 +105,9 @@
} else if (indexPath.row == 1) { } else if (indexPath.row == 1) {
// 添加 // 添加
[self.relaxItemsView addItem:item]; [self.relaxItemsView addItem:item];
} else if (indexPath.row == 2) {
// 添加
[self.relaxItemsView addItem:item];
} }
} }
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
CGFloat _itemBottomMargin; CGFloat _itemBottomMargin;
CGFloat _markerBottomMargin; CGFloat _markerBottomMargin;
int _relax_time; int _relax_time;
int _min_time;
int _left_right_total_time;
} }
- (instancetype)initWithFrame:(CGRect)frame { - (instancetype)initWithFrame:(CGRect)frame {
...@@ -47,6 +49,7 @@ ...@@ -47,6 +49,7 @@
_topMargin = 24.0; _topMargin = 24.0;
_itemBottomMargin = 47.0; _itemBottomMargin = 47.0;
_markerBottomMargin = 19.0; _markerBottomMargin = 19.0;
_min_time = 5;
self.dk_backgroundColorPicker = DKColorPickerWithKey(TabBarBG); self.dk_backgroundColorPicker = DKColorPickerWithKey(TabBarBG);
[self cornerRadius:24.0]; [self cornerRadius:24.0];
...@@ -125,6 +128,8 @@ ...@@ -125,6 +128,8 @@
self.timeWidths[index] = @(divideTimeW); self.timeWidths[index] = @(divideTimeW);
ReadyItem *item = self.relax_items[index]; ReadyItem *item = self.relax_items[index];
item.time = divideTime; item.time = divideTime;
ReadyItemCell *itemCell = self.itemCells[index];
itemCell.item = item;
} }
// 根据时长动态调整itemCell和marker位置 // 根据时长动态调整itemCell和marker位置
CGFloat leftAllTimeW1 = 0; CGFloat leftAllTimeW1 = 0;
...@@ -209,6 +214,8 @@ ...@@ -209,6 +214,8 @@
// 根据滑块索引获取左右2个itemCell // 根据滑块索引获取左右2个itemCell
self.leftItemCell = self.itemCells[index]; self.leftItemCell = self.itemCells[index];
self.rightItemCell = self.itemCells[index + 1]; self.rightItemCell = self.itemCells[index + 1];
// 左右itemCell总时长
_left_right_total_time = self.leftItemCell.item.time + self.rightItemCell.item.time;
} }
- (void)moveMarkerWithTranslationX:(CGFloat)translationX { - (void)moveMarkerWithTranslationX:(CGFloat)translationX {
...@@ -218,37 +225,87 @@ ...@@ -218,37 +225,87 @@
CGFloat max = 0; CGFloat max = 0;
// 偏差值 // 偏差值
CGFloat error = 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; min = _lineMargin + _markerW + error;
if (self.markers.count == 2) { // 3个item max = _lineW + _lineMargin - _markerW + - error;
// 拿到当前滑块右边1个滑块 rightCellMiddle = (_lineW + _lineMargin - self.curMarker.centerX)/2.0;
ReadyTimeMarker *rightMarker = self.markers[self.curMarkerIndex + 1]; leftItemCellCenterX = _lineMargin + (self.curMarker.centerX - _lineMargin)/2.0;
max = rightMarker.centerX - _markerW - error;
if (self.curMarker.centerX + translationX > min && self.curMarker.centerX + translationX < max) { left_right_total_line_w = _lineW - 2*_markerW;
self.curMarker.centerX = self.curMarker.centerX + translationX; left_line_w = self.curMarker.centerX - _lineMargin - _markerW;
self.leftItemCell.centerX = _lineMargin + (self.curMarker.centerX - _lineMargin)/2.0; left_min_margin = self.curMarker.centerX - _lineMargin;
self.rightItemCell.centerX = self.curMarker.centerX + (rightMarker.centerX - self.curMarker.centerX)/2.0; } else if (self.curMarkerIndex == 0 && self.markers.count > 1) {
} // 没有左滑块,有右滑块
} else { // 2个item ReadyTimeMarker *rightMarker = self.markers[self.curMarkerIndex + 1];
max = _lineW - _markerW + _lineMargin - error; min = _lineMargin + _markerW + error;
if (self.curMarker.centerX + translationX > min && self.curMarker.centerX + translationX < max) { max = rightMarker.centerX - _markerW - error;
self.curMarker.centerX = self.curMarker.centerX + translationX; rightCellMiddle = (rightMarker.centerX - self.curMarker.centerX)/2.0;
self.leftItemCell.centerX = _lineMargin + (self.curMarker.centerX - _lineMargin)/2.0; leftItemCellCenterX = _lineMargin + (self.curMarker.centerX - _lineMargin)/2.0;
self.rightItemCell.centerX = self.curMarker.centerX + (2*self.divideW - self.curMarker.centerX + _lineMargin)/2.0;
} left_right_total_line_w = rightMarker.centerX - _lineMargin - 2*_markerW;
} left_line_w = self.curMarker.centerX - _lineMargin - _markerW;
} else if (self.curMarkerIndex == 1) { // 3个item,处理最后2个item left_min_margin = self.curMarker.centerX - _lineMargin;
// 拿到当前滑块左边1个滑块 } else if (self.curMarkerIndex == self.markers.count - 1 && self.markers.count > 1) {
// 有左滑块,没有右滑块
ReadyTimeMarker *leftMarker = self.markers[self.curMarkerIndex - 1]; ReadyTimeMarker *leftMarker = self.markers[self.curMarkerIndex - 1];
min = leftMarker.centerX + _markerW + error; min = leftMarker.centerX + _markerW + error;
max = _lineW - _markerW + _lineMargin - error; max = _lineW - _markerW + _lineMargin - error;
if (self.curMarker.centerX + translationX > min && self.curMarker.centerX + translationX < max) { rightCellMiddle = (_lineW + _lineMargin - self.curMarker.centerX)/2.0;
self.curMarker.centerX = self.curMarker.centerX + translationX; leftItemCellCenterX = leftMarker.centerX + (self.curMarker.centerX - leftMarker.centerX)/2.0;
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; 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 #pragma mark - getter
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#import "ReadyItem.h" #import "ReadyItem.h"
@implementation SleepReadyRequestModel @implementation SleepReadyRequestModel
// user_setup_prepare_items、user_setup_prepare_peace_status
+ (NSURLSessionDataTask *)queryPreparePeaceListWithCompletion:(void (^)(SleepReadyRequestModel *requestModel))completion { + (NSURLSessionDataTask *)queryPreparePeaceListWithCompletion:(void (^)(SleepReadyRequestModel *requestModel))completion {
SleepReadyRequestModel * requestModel = [[SleepReadyRequestModel alloc] init]; SleepReadyRequestModel * requestModel = [[SleepReadyRequestModel alloc] init];
NSString *api = @"query_prepare_peace_list"; NSString *api = @"query_prepare_peace_list";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!