Commit 3f88980e1678435c7371cc92faf1c2d44229e2ff
1 parent
8351c338
增加融媒体联盟
Showing
5 changed files
with
85 additions
and
46 deletions
CNLiveCServiceModule/Classes/Model/CNLiveSearchModel.h
| @@ -61,6 +61,7 @@ NS_ASSUME_NONNULL_BEGIN | @@ -61,6 +61,7 @@ NS_ASSUME_NONNULL_BEGIN | ||
| 61 | 61 | ||
| 62 | @interface CNLiveSearchHotsModel : NSObject | 62 | @interface CNLiveSearchHotsModel : NSObject |
| 63 | @property (nonatomic, copy) NSString *title; | 63 | @property (nonatomic, copy) NSString *title; |
| 64 | +@property (nonatomic, copy) NSString *subTitle; | ||
| 64 | @property (nonatomic, strong) NSArray *lists; | 65 | @property (nonatomic, strong) NSArray *lists; |
| 65 | @property (nonatomic, assign) CGFloat cellHeight; | 66 | @property (nonatomic, assign) CGFloat cellHeight; |
| 66 | ///布局 | 67 | ///布局 |
CNLiveCServiceModule/Classes/Present/CNLiveServicePresent.m
| @@ -52,7 +52,7 @@ static const CGFloat margin = 15; | @@ -52,7 +52,7 @@ static const CGFloat margin = 15; | ||
| 52 | { | 52 | { |
| 53 | CNLiveSearchHotsModel *model1 = nil; | 53 | CNLiveSearchHotsModel *model1 = nil; |
| 54 | if (hots && hots.count > 0) { | 54 | if (hots && hots.count > 0) { |
| 55 | - model1 = [CNLiveServicePresent dealDataSource:hots title:@"热度推荐" cellHeight:0 itemSize:CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 80)showNum:0]; | 55 | + model1 = [CNLiveServicePresent dealDataSource:hots title:@"热度推荐" subtitle:@"" cellHeight:0 itemSize:CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 80)showNum:0]; |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | NSMutableArray *array2 = [NSMutableArray array]; | 58 | NSMutableArray *array2 = [NSMutableArray array]; |
| @@ -95,64 +95,63 @@ static const CGFloat margin = 15; | @@ -95,64 +95,63 @@ static const CGFloat margin = 15; | ||
| 95 | [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodGET URLString:cn_API_Classify(@"/servingApi/servingPage") Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) { | 95 | [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodGET URLString:cn_API_Classify(@"/servingApi/servingPage") Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) { |
| 96 | CNLiveServiceModel * model = [CNLiveServiceModel mj_objectWithKeyValues:responseObject[@"data"]]; | 96 | CNLiveServiceModel * model = [CNLiveServiceModel mj_objectWithKeyValues:responseObject[@"data"]]; |
| 97 | CNLiveSearchHotsModel *categoryModel = nil; | 97 | CNLiveSearchHotsModel *categoryModel = nil; |
| 98 | + NSMutableArray *dataArray = [NSMutableArray array]; | ||
| 98 | if (model.categories&&[model.categories isKindOfClass:[NSArray class]] && model.categories.count>0) { | 99 | if (model.categories&&[model.categories isKindOfClass:[NSArray class]] && model.categories.count>0) { |
| 99 | CGFloat cellheight = 160; | 100 | CGFloat cellheight = 160; |
| 100 | if (model.categories.count <= 4) { | 101 | if (model.categories.count <= 4) { |
| 101 | cellheight = 80; | 102 | cellheight = 80; |
| 102 | } | 103 | } |
| 103 | - categoryModel = [CNLiveServicePresent dealDataSource:model.categories title:@"" cellHeight:cellheight itemSize:CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 70)showNum:8]; | 104 | + categoryModel = [CNLiveServicePresent dealDataSource:model.categories title:@"" subtitle:@"" cellHeight:cellheight itemSize:CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 70)showNum:8]; |
| 105 | + if (categoryModel) { | ||
| 106 | + [dataArray addObject:categoryModel]; | ||
| 107 | + } | ||
| 104 | } | 108 | } |
| 105 | CNLiveSearchHotsModel *serviceModel = nil; | 109 | CNLiveSearchHotsModel *serviceModel = nil; |
| 106 | - CNLiveSearchHotsModel *mediaModel = nil; | ||
| 107 | - CNLiveSearchHotsModel *chineseModel = nil; | ||
| 108 | if (model.allList && model.allList.count > 0) { | 110 | if (model.allList && model.allList.count > 0) { |
| 109 | for (NSDictionary *dic in model.allList) { | 111 | for (NSDictionary *dic in model.allList) { |
| 110 | - if ([dic[@"name"] isEqualToString:@"中国服务号"]) { | 112 | + @autoreleasepool { |
| 113 | + CGFloat cellheight = 0; | ||
| 114 | + NSInteger showNum = 0; | ||
| 115 | + NSString *title = dic[@"name"]; | ||
| 116 | + NSString *subTitle = @""; | ||
| 117 | + CGSize itemSize = CGSizeMake(0, 0); | ||
| 111 | NSArray *lists = dic[@"list"]; | 118 | NSArray *lists = dic[@"list"]; |
| 112 | - if (lists &&[lists isKindOfClass:[NSArray class]] && lists.count > 0) { | ||
| 113 | - CGFloat cellheight = 160; | ||
| 114 | - if (lists.count <= 2) { | ||
| 115 | - cellheight = 90; | ||
| 116 | - } | ||
| 117 | - serviceModel = [CNLiveServicePresent dealDataSource:lists title:dic[@"name"] cellHeight:cellheight itemSize:CGSizeMake((KScreenWidth - 3*margin -10)/2, 60) showNum:4]; | 119 | + NSString *showTitle = dic[@"category"][@"showTitle"]; |
| 120 | + if (![showTitle isKindOfClass:[NSNull class]] && !showTitle.boolValue) { | ||
| 121 | + title = @""; | ||
| 118 | } | 122 | } |
| 119 | - } | ||
| 120 | - | ||
| 121 | - if ([dic[@"name"] isEqualToString:@"中国媒体号"]) { | ||
| 122 | - NSArray *lists = dic[@"list"]; | ||
| 123 | - if (lists &&[lists isKindOfClass:[NSArray class]] && lists.count > 0) { | ||
| 124 | - CGFloat cellheight = 190; | ||
| 125 | - if (lists.count <= 4) { | ||
| 126 | - cellheight = 105; | ||
| 127 | - } | ||
| 128 | - mediaModel = [CNLiveServicePresent dealDataSource:lists title:dic[@"name"] cellHeight:cellheight itemSize:CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 70) showNum:8]; | 123 | + if ([dic[@"name"] isEqualToString:@"中国服务号"]) { |
| 124 | + cellheight = 160; | ||
| 125 | + if (lists.count <= 2) { | ||
| 126 | + cellheight = 90; | ||
| 127 | + } | ||
| 128 | + showNum = 4; | ||
| 129 | + itemSize = CGSizeMake((KScreenWidth - 3*margin -10)/2, 60); | ||
| 130 | + }else if ([dic[@"name"] isEqualToString:@"中国媒体号"] || [dic[@"name"] isEqualToString:@"中国网中国号"]) { | ||
| 131 | + cellheight = 190; | ||
| 132 | + if (lists.count <= 4) { | ||
| 133 | + cellheight = 105; | ||
| 134 | + } | ||
| 135 | + showNum = 8; | ||
| 136 | + itemSize = CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 70); | ||
| 137 | + }else{ | ||
| 138 | + cellheight = 105; | ||
| 139 | + showNum = 4; | ||
| 140 | + itemSize = CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 70); | ||
| 141 | + subTitle = dic[@"category"][@"subTitle"]; | ||
| 129 | } | 142 | } |
| 130 | - } | ||
| 131 | - if ([dic[@"name"] isEqualToString:@"中国网中国号"]) { | ||
| 132 | - NSArray *lists = dic[@"list"]; | ||
| 133 | if (lists &&[lists isKindOfClass:[NSArray class]] && lists.count > 0) { | 143 | if (lists &&[lists isKindOfClass:[NSArray class]] && lists.count > 0) { |
| 134 | - CGFloat cellheight = 190; | ||
| 135 | - if (lists.count <= 4) { | ||
| 136 | - cellheight = 105; | ||
| 137 | - } | ||
| 138 | - chineseModel = [CNLiveServicePresent dealDataSource:lists title:dic[@"name"] cellHeight:cellheight itemSize:CGSizeMake((SCREEN_WIDTH-4*margin-3*margin)/4.0, 70) showNum:8]; | 144 | + serviceModel = [CNLiveServicePresent dealDataSource:dic[@"list"] title:title subtitle:subTitle cellHeight:cellheight itemSize:itemSize showNum:showNum]; |
| 145 | + } | ||
| 146 | + if (serviceModel) { | ||
| 147 | + [dataArray addObject:serviceModel]; | ||
| 139 | } | 148 | } |
| 140 | } | 149 | } |
| 150 | + | ||
| 141 | } | 151 | } |
| 142 | } | 152 | } |
| 143 | - NSMutableArray *dataArray = [NSMutableArray array]; | ||
| 144 | - if (categoryModel) { | ||
| 145 | - [dataArray addObject:categoryModel]; | ||
| 146 | - } | ||
| 147 | - if (serviceModel) { | ||
| 148 | - [dataArray addObject:serviceModel]; | ||
| 149 | - } | ||
| 150 | - if (mediaModel) { | ||
| 151 | - [dataArray addObject:mediaModel]; | ||
| 152 | - } | ||
| 153 | - if (chineseModel) { | ||
| 154 | - [dataArray addObject:chineseModel]; | ||
| 155 | - } | 153 | + |
| 154 | + | ||
| 156 | if (model) { | 155 | if (model) { |
| 157 | !result?:result(dataArray.copy,model.hots); | 156 | !result?:result(dataArray.copy,model.hots); |
| 158 | }else{ | 157 | }else{ |
| @@ -162,7 +161,7 @@ static const CGFloat margin = 15; | @@ -162,7 +161,7 @@ static const CGFloat margin = 15; | ||
| 162 | }]; | 161 | }]; |
| 163 | } | 162 | } |
| 164 | 163 | ||
| 165 | -+ (CNLiveSearchHotsModel *) dealDataSource:(NSArray *)array title:(NSString *)title cellHeight:(CGFloat)cellHeight itemSize:(CGSize) size showNum:(NSInteger)num{ | 164 | ++ (CNLiveSearchHotsModel *) dealDataSource:(NSArray *)array title:(NSString *)title subtitle:(NSString *)subTitle cellHeight:(CGFloat)cellHeight itemSize:(CGSize) size showNum:(NSInteger)num{ |
| 166 | NSMutableArray *categories = [NSMutableArray array]; | 165 | NSMutableArray *categories = [NSMutableArray array]; |
| 167 | NSMutableArray *squreArray = [NSMutableArray array]; | 166 | NSMutableArray *squreArray = [NSMutableArray array]; |
| 168 | for (int i = 0; i< array.count ;i++ ) { | 167 | for (int i = 0; i< array.count ;i++ ) { |
| @@ -177,6 +176,7 @@ static const CGFloat margin = 15; | @@ -177,6 +176,7 @@ static const CGFloat margin = 15; | ||
| 177 | if (num != 0 && (i != 0 || array.count == 1) &&((i + 1)%num == 0 || i == array.count - 1)) { | 176 | if (num != 0 && (i != 0 || array.count == 1) &&((i + 1)%num == 0 || i == array.count - 1)) { |
| 178 | NSDictionary *category = @{ | 177 | NSDictionary *category = @{ |
| 179 | @"title":title, | 178 | @"title":title, |
| 179 | + @"subTitle":subTitle, | ||
| 180 | @"lists":categories.copy, | 180 | @"lists":categories.copy, |
| 181 | @"cellHeight":@(cellHeight), | 181 | @"cellHeight":@(cellHeight), |
| 182 | @"layout":@{ | 182 | @"layout":@{ |
| @@ -192,6 +192,7 @@ static const CGFloat margin = 15; | @@ -192,6 +192,7 @@ static const CGFloat margin = 15; | ||
| 192 | if (categories && num !=0 && categories.count == 0) { | 192 | if (categories && num !=0 && categories.count == 0) { |
| 193 | NSDictionary *category = @{ | 193 | NSDictionary *category = @{ |
| 194 | @"title":title, | 194 | @"title":title, |
| 195 | + @"subTitle":subTitle, | ||
| 195 | @"lists":squreArray.copy, | 196 | @"lists":squreArray.copy, |
| 196 | @"cellHeight":@(cellHeight), | 197 | @"cellHeight":@(cellHeight), |
| 197 | @"layout":@{ | 198 | @"layout":@{ |
| @@ -204,6 +205,7 @@ static const CGFloat margin = 15; | @@ -204,6 +205,7 @@ static const CGFloat margin = 15; | ||
| 204 | } | 205 | } |
| 205 | NSDictionary *category = @{ | 206 | NSDictionary *category = @{ |
| 206 | @"title":title, | 207 | @"title":title, |
| 208 | + @"subTitle":subTitle, | ||
| 207 | @"lists":categories.copy, | 209 | @"lists":categories.copy, |
| 208 | @"cellHeight":@(cellHeight), | 210 | @"cellHeight":@(cellHeight), |
| 209 | @"layout":@{ | 211 | @"layout":@{ |
CNLiveCServiceModule/Classes/View/CNLiveCycleCell.m
| @@ -63,7 +63,7 @@ static NSString *CNServiceOrLookID = @"CNLiveServiceOrLookCell"; | @@ -63,7 +63,7 @@ static NSString *CNServiceOrLookID = @"CNLiveServiceOrLookCell"; | ||
| 63 | } | 63 | } |
| 64 | #pragma mark - UICollectionViewDataSource | 64 | #pragma mark - UICollectionViewDataSource |
| 65 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ | 65 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ |
| 66 | - if ([self.model.title isEqualToString:@""]) { | 66 | + if ([self.model.title isEqualToString:@""] && [self.model.subTitle isEqualToString:@""]) { |
| 67 | return self.dataSource.count + 2; | 67 | return self.dataSource.count + 2; |
| 68 | } | 68 | } |
| 69 | return self.dataSource.count; | 69 | return self.dataSource.count; |
| @@ -110,7 +110,7 @@ static NSString *CNServiceOrLookID = @"CNLiveServiceOrLookCell"; | @@ -110,7 +110,7 @@ static NSString *CNServiceOrLookID = @"CNLiveServiceOrLookCell"; | ||
| 110 | if ([_model.title isEqual:@"中国服务号"]) { | 110 | if ([_model.title isEqual:@"中国服务号"]) { |
| 111 | return UIEdgeInsetsMake(10, 5, 10, 5); | 111 | return UIEdgeInsetsMake(10, 5, 10, 5); |
| 112 | } | 112 | } |
| 113 | - if ([_model.title isEqual:@""]) { | 113 | + if ([_model.title isEqual:@""] || ![_model.subTitle isEqualToString:@""]) { |
| 114 | return UIEdgeInsetsMake(5, 0, 5, 0); | 114 | return UIEdgeInsetsMake(5, 0, 5, 0); |
| 115 | } | 115 | } |
| 116 | if ([_model.title isEqual:@"大家都在用"]) { | 116 | if ([_model.title isEqual:@"大家都在用"]) { |
CNLiveCServiceModule/Classes/View/CNLiveCycleView.m
| @@ -47,7 +47,7 @@ static NSString *CNCycleCellID = @"CNCycleCellID"; | @@ -47,7 +47,7 @@ static NSString *CNCycleCellID = @"CNCycleCellID"; | ||
| 47 | { | 47 | { |
| 48 | _model = model; | 48 | _model = model; |
| 49 | self.dataSource = model.lists; | 49 | self.dataSource = model.lists; |
| 50 | - if ([model.title isEqualToString:@"中国媒体号"]||[model.title isEqualToString:@"中国网中国号"]) { | 50 | + if ([model.title isEqualToString:@"中国媒体号"]||[model.title isEqualToString:@"中国网中国号"] || (model.subTitle && ![model.subTitle isEqualToString:@""])) { |
| 51 | self.collectionView.backgroundColor = CNLiveColorWithHexString(@"#F9FAFB"); | 51 | self.collectionView.backgroundColor = CNLiveColorWithHexString(@"#F9FAFB"); |
| 52 | self.collectionView.layer.cornerRadius = 5.66; | 52 | self.collectionView.layer.cornerRadius = 5.66; |
| 53 | }else | 53 | }else |
CNLiveCServiceModule/Classes/View/CNLiveServiceChinasCell.m
| @@ -9,6 +9,7 @@ | @@ -9,6 +9,7 @@ | ||
| 9 | #import "CNLiveCycleView.h" | 9 | #import "CNLiveCycleView.h" |
| 10 | 10 | ||
| 11 | @interface CNLiveServiceChinasCell() | 11 | @interface CNLiveServiceChinasCell() |
| 12 | +@property (nonatomic, strong) UILabel *subTitle; | ||
| 12 | @property (nonatomic, strong) CNLiveCycleView *cycleView; | 13 | @property (nonatomic, strong) CNLiveCycleView *cycleView; |
| 13 | @end | 14 | @end |
| 14 | 15 | ||
| @@ -17,6 +18,7 @@ | @@ -17,6 +18,7 @@ | ||
| 17 | { | 18 | { |
| 18 | self = [super initWithFrame:frame]; | 19 | self = [super initWithFrame:frame]; |
| 19 | if (self) { | 20 | if (self) { |
| 21 | + [self.contentView addSubview:self.subTitle]; | ||
| 20 | [self.contentView addSubview:self.cycleView]; | 22 | [self.contentView addSubview:self.cycleView]; |
| 21 | [self makeSubViewsLayout]; | 23 | [self makeSubViewsLayout]; |
| 22 | } | 24 | } |
| @@ -24,6 +26,12 @@ | @@ -24,6 +26,12 @@ | ||
| 24 | } | 26 | } |
| 25 | - (void)makeSubViewsLayout | 27 | - (void)makeSubViewsLayout |
| 26 | { | 28 | { |
| 29 | + [self.subTitle mas_makeConstraints:^(MASConstraintMaker *make) { | ||
| 30 | + make.top.equalTo(self); | ||
| 31 | + make.left.equalTo(self.contentView).offset(15); | ||
| 32 | + make.right.equalTo(self.contentView).offset(-15); | ||
| 33 | + make.height.offset(20); | ||
| 34 | + }]; | ||
| 27 | [self.cycleView mas_makeConstraints:^(MASConstraintMaker *make) { | 35 | [self.cycleView mas_makeConstraints:^(MASConstraintMaker *make) { |
| 28 | make.top.bottom.equalTo(self.contentView); | 36 | make.top.bottom.equalTo(self.contentView); |
| 29 | make.left.equalTo(self.contentView).offset(15); | 37 | make.left.equalTo(self.contentView).offset(15); |
| @@ -34,16 +42,44 @@ | @@ -34,16 +42,44 @@ | ||
| 34 | - (void)setModel:(CNLiveSearchHotsModel *)model | 42 | - (void)setModel:(CNLiveSearchHotsModel *)model |
| 35 | { | 43 | { |
| 36 | _model = model; | 44 | _model = model; |
| 45 | + if (model.subTitle && ![model.subTitle isEqualToString:@""]) { | ||
| 46 | + self.subTitle.hidden = NO; | ||
| 47 | + self.subTitle.text = model.subTitle; | ||
| 48 | + [self.cycleView mas_remakeConstraints:^(MASConstraintMaker *make) { | ||
| 49 | + make.top.equalTo(self.subTitle.mas_bottom); | ||
| 50 | + make.bottom.equalTo(self); | ||
| 51 | + make.left.equalTo(self.contentView).offset(15); | ||
| 52 | + make.right.equalTo(self.contentView).offset(-15); | ||
| 53 | + }]; | ||
| 54 | + }else{ | ||
| 55 | + self.subTitle.hidden = YES; | ||
| 56 | + [self.cycleView mas_remakeConstraints:^(MASConstraintMaker *make) { | ||
| 57 | + make.top.bottom.equalTo(self); | ||
| 58 | + make.left.equalTo(self.contentView).offset(15); | ||
| 59 | + make.right.equalTo(self.contentView).offset(-15); | ||
| 60 | + }]; | ||
| 61 | + } | ||
| 37 | _cycleView.model = model; | 62 | _cycleView.model = model; |
| 38 | _cycleView.localizationImageNamesGroup = model.lists; | 63 | _cycleView.localizationImageNamesGroup = model.lists; |
| 39 | 64 | ||
| 40 | } | 65 | } |
| 66 | +- (UILabel *)subTitle | ||
| 67 | +{ | ||
| 68 | + if (!_subTitle) { | ||
| 69 | + _subTitle = [[UILabel alloc] init]; | ||
| 70 | + _subTitle.font = UIFontMake(14); | ||
| 71 | + _subTitle.textColor = UIColorHex(#333333); | ||
| 72 | + _subTitle.backgroundColor = UIColorHex(#FCFDFD); | ||
| 73 | + } | ||
| 74 | + return _subTitle; | ||
| 75 | +} | ||
| 41 | - (CNLiveCycleView *)cycleView | 76 | - (CNLiveCycleView *)cycleView |
| 42 | { | 77 | { |
| 43 | if (!_cycleView) { | 78 | if (!_cycleView) { |
| 44 | _cycleView = [[CNLiveCycleView alloc] initWithFrame:CGRectZero]; | 79 | _cycleView = [[CNLiveCycleView alloc] initWithFrame:CGRectZero]; |
| 45 | _cycleView.autoScroll = NO; | 80 | _cycleView.autoScroll = NO; |
| 46 | _cycleView.showPageControl = YES; | 81 | _cycleView.showPageControl = YES; |
| 82 | + | ||
| 47 | _cycleView.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated; | 83 | _cycleView.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated; |
| 48 | _cycleView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; | 84 | _cycleView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; |
| 49 | _cycleView.hidesForSinglePage = YES; | 85 | _cycleView.hidesForSinglePage = YES; |