Commit 3d9e36a90ea8e0f805a08a0ebf6ef9826e0c67aa
1 parent
b081d723
no message
Showing
12 changed files
with
135 additions
and
4 deletions
CNLiveVideoClassifyKit.podspec
| ... | ... | @@ -49,5 +49,6 @@ TODO: Add long description of the pod here. |
| 49 | 49 | s.dependency 'CNLiveTripartiteManagement/SDWebImage' |
| 50 | 50 | s.dependency 'CNLiveTripartiteManagement/Masonry' |
| 51 | 51 | s.dependency 'CNLiveTripartiteManagement/YYKit' |
| 52 | + s.dependency 'CNLiveTripartiteManagement/QMUIKit' | |
| 52 | 53 | |
| 53 | 54 | end | ... | ... |
CNLiveVideoClassifyKit/Assets/CNSegmentControl.bundle/ClassifySearch@2x.png
0 → 100644
1.08 KB
CNLiveVideoClassifyKit/Assets/CNSegmentControl.bundle/ClassifySearch@3x.png
0 → 100644
1.93 KB
CNLiveVideoClassifyKit/Assets/CNSegmentControl.bundle/ClassifySearchBlack@2x.png
0 → 100644
1.25 KB
CNLiveVideoClassifyKit/Assets/CNSegmentControl.bundle/ClassifySearchBlack@3x.png
0 → 100644
2.51 KB
CNLiveVideoClassifyKit/Classes/Category/UIImage+AdBundleImage.h
0 → 100644
| 1 | +// | |
| 2 | +// UIImage+AdBundleImage.h | |
| 3 | +// CNLiveVideoClassifyKit | |
| 4 | +// | |
| 5 | +// Created by CNLive on 2021/9/7. | |
| 6 | +// | |
| 7 | + | |
| 8 | +#import <UIKit/UIKit.h> | |
| 9 | + | |
| 10 | +NS_ASSUME_NONNULL_BEGIN | |
| 11 | + | |
| 12 | +@interface UIImage (AdBundleImage) | |
| 13 | + | |
| 14 | ++(UIImage *)loadBundleImage:(NSString *)imageName; | |
| 15 | +@end | |
| 16 | + | |
| 17 | +NS_ASSUME_NONNULL_END | ... | ... |
CNLiveVideoClassifyKit/Classes/Category/UIImage+AdBundleImage.m
0 → 100644
| 1 | +// | |
| 2 | +// UIImage+AdBundleImage.m | |
| 3 | +// CNLiveVideoClassifyKit | |
| 4 | +// | |
| 5 | +// Created by CNLive on 2021/9/7. | |
| 6 | +// | |
| 7 | + | |
| 8 | +#import "UIImage+AdBundleImage.h" | |
| 9 | +#import "CNCategoryBaseViewController.h" | |
| 10 | + | |
| 11 | +@implementation UIImage (AdBundleImage) | |
| 12 | ++(UIImage *)loadBundleImage:(NSString *)imageName{ | |
| 13 | + | |
| 14 | + // 获取当前的bundle,self只是在当前pod库中的一个类,也可以随意写一个其他的类 | |
| 15 | + NSBundle *currentBundle = [NSBundle bundleForClass:[CNCategoryBaseViewController class]]; | |
| 16 | + // 获取屏幕pt和px之间的比例 | |
| 17 | + NSInteger scale = [UIScreen mainScreen].scale; | |
| 18 | + NSString *imagefailName = [NSString stringWithFormat:@"%@@%zdx.png",imageName,scale]; | |
| 19 | + // 获取图片的路径,其中BMCH5WebView是组件名 | |
| 20 | + NSString *imagePath = [currentBundle pathForResource:imagefailName ofType:nil inDirectory:[NSString stringWithFormat:@"%@.bundle",@"CNSegmentControl"]]; | |
| 21 | + // 获取图片 | |
| 22 | + return [UIImage imageWithContentsOfFile:imagePath]; | |
| 23 | +} | |
| 24 | +@end | ... | ... |
CNLiveVideoClassifyKit/Classes/Controller/CNListViewController.m
| ... | ... | @@ -14,6 +14,7 @@ |
| 14 | 14 | { |
| 15 | 15 | NSString *_thirdUrl; |
| 16 | 16 | NSDictionary *_paramDic; |
| 17 | + CNLiveSubWebViewController *subVC; | |
| 17 | 18 | |
| 18 | 19 | } |
| 19 | 20 | @end |
| ... | ... | @@ -38,6 +39,16 @@ |
| 38 | 39 | self.view.backgroundColor = [UIColor whiteColor]; |
| 39 | 40 | self.navigationHidden = YES; |
| 40 | 41 | } |
| 42 | +-(void)dealloc | |
| 43 | +{ | |
| 44 | + for (UIView*subView in subVC.view.subviews) { | |
| 45 | + if ([subView isKindOfClass:[WKWebView class]]) { | |
| 46 | + WKWebView *webView = (WKWebView *)subView; | |
| 47 | + [webView.scrollView removeObserver:self forKeyPath:@"contentOffset"]; | |
| 48 | + } | |
| 49 | + } | |
| 50 | + | |
| 51 | +} | |
| 41 | 52 | |
| 42 | 53 | -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context |
| 43 | 54 | { |
| ... | ... | @@ -55,7 +66,7 @@ |
| 55 | 66 | 实现 <JXCategoryListContentViewDelegate> 协议方法,返回该视图控制器所拥有的「视图」 |
| 56 | 67 | */ |
| 57 | 68 | - (UIView *)listView { |
| 58 | - CNLiveSubWebViewController *subVC = [CNLiveCWebViewModule showWebVCWithLunchForWebURL:_thirdUrl | |
| 69 | + subVC = [CNLiveCWebViewModule showWebVCWithLunchForWebURL:_thirdUrl | |
| 59 | 70 | ParamDict:_paramDic ShowType:CNLiveWebViewLunchShowTypeHidden]; |
| 60 | 71 | for (UIView*subView in subVC.view.subviews) { |
| 61 | 72 | if ([subView isKindOfClass:[WKWebView class]]) { | ... | ... |
CNLiveVideoClassifyKit/Classes/Controller/CNLiveClassifySegmentController.m
| ... | ... | @@ -273,6 +273,8 @@ static CGFloat moveHeight = 50; |
| 273 | 273 | { |
| 274 | 274 | for (UIView *view in self.listContainerView.scrollView.subviews) { |
| 275 | 275 | if ([view.viewController isKindOfClass:[CNLiveSubSegmentController class]]) { |
| 276 | + CNLiveSubSegmentController *subVc = view.viewController; | |
| 277 | + [subVc layoutRightSubViewWithShow:!enabled]; | |
| 276 | 278 | for (UIView *subView in view.subviews) { |
| 277 | 279 | if ([subView isKindOfClass:[JXCategoryListContainerView class]]) { |
| 278 | 280 | JXCategoryListContainerView *titleView = (JXCategoryListContainerView *)subView; | ... | ... |
CNLiveVideoClassifyKit/Classes/Controller/CNLiveSubSegmentController.h
| ... | ... | @@ -18,7 +18,8 @@ NS_ASSUME_NONNULL_BEGIN |
| 18 | 18 | @property (nonatomic, copy) void (^scrollViewDidScrollBlock)(UIScrollView *); |
| 19 | 19 | @property (nonatomic, copy) void (^willBeginDragging)(CGFloat ); |
| 20 | 20 | |
| 21 | -//- (void)stopScrolling; | |
| 21 | +// 一级频道显示隐藏时二级频道右侧的搜索按钮变宽变窄控制 | |
| 22 | +- (void)layoutRightSubViewWithShow:(BOOL)show; | |
| 22 | 23 | |
| 23 | 24 | @end |
| 24 | 25 | ... | ... |
CNLiveVideoClassifyKit/Classes/Controller/CNLiveSubSegmentController.m
| ... | ... | @@ -11,6 +11,8 @@ |
| 11 | 11 | |
| 12 | 12 | @interface CNLiveSubSegmentController () |
| 13 | 13 | @property (nonatomic, strong)JXCategoryTitleView *myCategoryView; |
| 14 | +@property (nonatomic, strong) QMUIButton *searchBtn; | |
| 15 | + | |
| 14 | 16 | @property (nonatomic, strong)NSArray<CNCategoryGetChannelModel*> *pageListArr; |
| 15 | 17 | @property (nonatomic, strong)UIColor *textColor; |
| 16 | 18 | @property (nonatomic, strong)UIColor *backgroundColor; |
| ... | ... | @@ -47,6 +49,8 @@ |
| 47 | 49 | |
| 48 | 50 | - (void)viewDidLoad { |
| 49 | 51 | [super viewDidLoad]; |
| 52 | + // 添加二级频道右侧的搜索按钮 | |
| 53 | + [self.view addSubview:self.searchBtn]; | |
| 50 | 54 | self.view.backgroundColor = [UIColor clearColor]; |
| 51 | 55 | self.myCategoryView.titles = self.titles; |
| 52 | 56 | if (CNLiveStringIsEmpty(self.backImage)) { |
| ... | ... | @@ -69,9 +73,13 @@ |
| 69 | 73 | -(void)viewDidLayoutSubviews |
| 70 | 74 | { |
| 71 | 75 | [super viewDidLayoutSubviews]; |
| 72 | - | |
| 73 | - self.categoryView.frame = CGRectMake(0, 0, self.view.bounds.size.width, [self preferredCategoryViewHeight]); | |
| 76 | + self.searchBtn.frame = CGRectMake(0, 0, 66, 30); | |
| 77 | + self.searchBtn.right = KScreenWidth-12; | |
| 78 | + self.searchBtn.centerY = self.myCategoryView.height/2; | |
| 79 | + self.myCategoryView.top = 0; | |
| 80 | + self.myCategoryView.width = self.searchBtn.left; | |
| 74 | 81 | self.listContainerView.frame = CGRectMake(0, [self preferredCategoryViewHeight]+10, self.view.bounds.size.width, self.view.bounds.size.height - [self preferredCategoryViewHeight]); |
| 82 | + | |
| 75 | 83 | } |
| 76 | 84 | #pragma mark - Method |
| 77 | 85 | -(void)handleDateWithChannelsArray{ |
| ... | ... | @@ -81,6 +89,47 @@ |
| 81 | 89 | [self.titles addObject:model.name]; |
| 82 | 90 | } |
| 83 | 91 | } |
| 92 | +// 一级频道显示隐藏时二级频道右侧的搜索按钮变宽变窄控制 | |
| 93 | +- (void)layoutRightSubViewWithShow:(BOOL)show { | |
| 94 | + | |
| 95 | + if (show) { | |
| 96 | + // 正常 | |
| 97 | + [UIView animateWithDuration:0.3 animations:^{ | |
| 98 | + | |
| 99 | + self.searchBtn.width = 66; | |
| 100 | + self.searchBtn.right = KScreenWidth-12; | |
| 101 | + [self.searchBtn setTitle:@"搜索" forState:UIControlStateNormal]; | |
| 102 | + | |
| 103 | +// if ([self.channelModel.id isEqualToString:@"219"]) { | |
| 104 | +// self.moreBtn.right = KScreenWidth-12-66-15; | |
| 105 | +// self.progressView.right = KScreenWidth-93-18-15; | |
| 106 | +// } else if ([self.channelModel.id isEqualToString:@"11"]) { | |
| 107 | +// self.historyBtn.right = KScreenWidth-93; | |
| 108 | +// } | |
| 109 | + | |
| 110 | + self.myCategoryView.width = self.searchBtn.left; | |
| 111 | + }]; | |
| 112 | + } else { | |
| 113 | + // 变窄 | |
| 114 | + [UIView animateWithDuration:0.3 animations:^{ | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + self.searchBtn.width = 30; | |
| 119 | + self.searchBtn.right = KScreenWidth-12; | |
| 120 | + [self.searchBtn setTitle:nil forState:UIControlStateNormal]; | |
| 121 | + | |
| 122 | +// if ([self.channelModel.id isEqualToString:@"219"]) { | |
| 123 | +// self.moreBtn.right = KScreenWidth-12-66-15+30; | |
| 124 | +// self.progressView.right = KScreenWidth-93-18-15+30; | |
| 125 | +// } else if ([self.channelModel.id isEqualToString:@"11"]) { | |
| 126 | +// self.historyBtn.right = KScreenWidth-93+30; | |
| 127 | +// } | |
| 128 | + self.myCategoryView.width = self.searchBtn.left; | |
| 129 | + }]; | |
| 130 | + } | |
| 131 | +} | |
| 132 | + | |
| 84 | 133 | #pragma mark - Public |
| 85 | 134 | -(JXCategoryTitleView *)preferredCategoryView{ |
| 86 | 135 | return [[JXCategoryTitleView alloc] init]; |
| ... | ... | @@ -119,6 +168,30 @@ |
| 119 | 168 | return (JXCategoryTitleView *)self.categoryView; |
| 120 | 169 | } |
| 121 | 170 | |
| 171 | +- (QMUIButton *)searchBtn { | |
| 172 | + if (!_searchBtn) { | |
| 173 | + _searchBtn = [QMUIButton buttonWithType:UIButtonTypeCustom]; | |
| 174 | + [_searchBtn setTitle:@"搜索" forState:UIControlStateNormal]; | |
| 175 | + _searchBtn.titleLabel.font = [UIFont systemFontOfSize:14.0]; | |
| 176 | + if (self.isBlack) { | |
| 177 | + _searchBtn.backgroundColor = RGBA(245, 245, 245, 0.3); | |
| 178 | + [_searchBtn setTitleColor:KGray153Color forState:UIControlStateNormal]; | |
| 179 | + [_searchBtn setImage:[UIImage loadBundleImage:@"ClassifySearchBlack"] forState:UIControlStateNormal]; | |
| 180 | + }else | |
| 181 | + { | |
| 182 | + _searchBtn.backgroundColor = RGBA(249, 249, 249, 0.14); | |
| 183 | + [_searchBtn setTitleColor:kWhiteColor forState:UIControlStateNormal]; | |
| 184 | + [_searchBtn setImage:[UIImage loadBundleImage:@"ClassifySearch"] forState:UIControlStateNormal]; | |
| 185 | + } | |
| 186 | + _searchBtn.imagePosition = QMUIButtonImagePositionLeft; | |
| 187 | + _searchBtn.spacingBetweenImageAndTitle = 5; | |
| 188 | + _searchBtn.layer.cornerRadius = 15; | |
| 189 | + _searchBtn.layer.masksToBounds = YES; | |
| 190 | + [_searchBtn addTarget:self action:@selector(searchAction:) forControlEvents:UIControlEventTouchUpInside]; | |
| 191 | + } | |
| 192 | + return _searchBtn; | |
| 193 | +} | |
| 194 | + | |
| 122 | 195 | /* |
| 123 | 196 | #pragma mark - Navigation |
| 124 | 197 | ... | ... |
CNLiveVideoClassifyKit/Classes/Header/CNLivevideoClassifyPCH.h
| ... | ... | @@ -19,6 +19,8 @@ |
| 19 | 19 | #import <CNLiveCommonCategory/UIColor+CNLiveExtension.h> |
| 20 | 20 | #import <MJExtension/MJExtension.h> |
| 21 | 21 | #import "CNLiveCommonDefines.h" |
| 22 | +#import <QMUIKit/QMUIKit.h> | |
| 23 | +#import "UIImage+AdBundleImage.h" | |
| 22 | 24 | |
| 23 | 25 | |
| 24 | 26 | #endif /* CNLivevideoClassifyPCH_h */ | ... | ... |