Commit 8971f5248f23d5b1f77b6f8b85ae2383fa96fc34
1 parent
95dd1d95
移除通用文件0.2.8
Showing
14 changed files
with
3 additions
and
858 deletions
CNLiveCMineModule.podspec
CNLiveCMineModule/Classes/TZPhotoCell/Tools/CNCutDown.h renamed to CNLiveCMineModule/Classes/TZPhotoCell/CNCutDown.h
CNLiveCMineModule/Classes/TZPhotoCell/Tools/CNCutDown.m renamed to CNLiveCMineModule/Classes/TZPhotoCell/CNCutDown.m
CNLiveCMineModule/Classes/TZPhotoCell/Tools/CNOrderEventHandle.h renamed to CNLiveCMineModule/Classes/TZPhotoCell/CNOrderEventHandle.h
CNLiveCMineModule/Classes/TZPhotoCell/Tools/CNOrderEventHandle.m renamed to CNLiveCMineModule/Classes/TZPhotoCell/CNOrderEventHandle.m
CNLiveCMineModule/Classes/TZPhotoCell/CNPasswordView.h deleted
100644 → 0
| 1 | -// | |
| 2 | -// CNPasswordView.h | |
| 3 | -// CNLiveNetAdd | |
| 4 | -// | |
| 5 | -// Created by 流诗语 on 2018/7/5. | |
| 6 | -// Copyright © 2018年 cnlive. All rights reserved. | |
| 7 | -// | |
| 8 | - | |
| 9 | -#import <UIKit/UIKit.h> | |
| 10 | -#import "CNTextField.h" | |
| 11 | - | |
| 12 | -typedef enum { | |
| 13 | - CNLiveActivePayInputTypePassword,//支付密码 | |
| 14 | - CNLiveActivePayInputTypeVerification //验证码 | |
| 15 | -} CNLiveActivePayInputType; | |
| 16 | - | |
| 17 | - | |
| 18 | -@interface CNPasswordView : UIView<UITextFieldDelegate> | |
| 19 | - | |
| 20 | -/** | |
| 21 | - 初始化界面 | |
| 22 | - | |
| 23 | - @param inputType 输入类型 | |
| 24 | - @return 返回 | |
| 25 | - */ | |
| 26 | -- (instancetype)initWithCNLiveActivePayInputType:(CNLiveActivePayInputType)inputType; | |
| 27 | - | |
| 28 | -/** | |
| 29 | - * 清除密码 | |
| 30 | - */ | |
| 31 | -- (void)clearUpPassword; | |
| 32 | - | |
| 33 | -@property (copy, nonatomic) void(^passwordResultBlock)(NSString * password); | |
| 34 | - | |
| 35 | -@property (nonatomic, strong) CNTextField *textField; | |
| 36 | - | |
| 37 | -@end |
CNLiveCMineModule/Classes/TZPhotoCell/CNPasswordView.m deleted
100644 → 0
| 1 | - | |
| 2 | -// | |
| 3 | -// CNPasswordView.m | |
| 4 | -// CNLiveNetAdd | |
| 5 | -// | |
| 6 | -// Created by 流诗语 on 2018/7/5. | |
| 7 | -// Copyright © 2018年 cnlive. All rights reserved. | |
| 8 | -// | |
| 9 | - | |
| 10 | -#import "CNPasswordView.h" | |
| 11 | - | |
| 12 | -#define kDotSize CGSizeMake (15, 15) //密码点的大小 | |
| 13 | -#define kDotCount 6 //密码个数 | |
| 14 | - | |
| 15 | -@interface CNPasswordView () | |
| 16 | - | |
| 17 | -@property (nonatomic, strong) NSMutableArray *dotArray; //用于存放黑色的点点 | |
| 18 | -@property (assign, nonatomic) CNLiveActivePayInputType inputType; | |
| 19 | -@end | |
| 20 | - | |
| 21 | -@implementation CNPasswordView | |
| 22 | -- (instancetype)initWithCNLiveActivePayInputType:(CNLiveActivePayInputType)inputType | |
| 23 | -{ | |
| 24 | - self = [super init]; | |
| 25 | - if (self) { | |
| 26 | - self.inputType = inputType; | |
| 27 | - self.frame = CGRectMake(0, 0, KScreenWidth-60, 40); | |
| 28 | - self.layer.borderColor = [[UIColor grayColor] CGColor]; | |
| 29 | - self.layer.borderWidth = 1; | |
| 30 | - self.layer.masksToBounds = YES; | |
| 31 | - self.layer.cornerRadius = 5; | |
| 32 | - self.backgroundColor = [UIColor whiteColor]; | |
| 33 | - [self initPwdTextField]; | |
| 34 | - } | |
| 35 | - return self; | |
| 36 | -} | |
| 37 | -- (void)initPwdTextField | |
| 38 | -{ | |
| 39 | - //每个密码输入框的宽度 | |
| 40 | - CGFloat width = self.frame.size.width / kDotCount; | |
| 41 | - | |
| 42 | - //生成分割线 | |
| 43 | - for (int i = 0; i < kDotCount - 1; i++) { | |
| 44 | - UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.textField.frame) + (i + 1) * width, 0, 1, self.frame.size.height)]; | |
| 45 | - lineView.backgroundColor = [UIColor grayColor]; | |
| 46 | - [self addSubview:lineView]; | |
| 47 | - } | |
| 48 | - | |
| 49 | - self.dotArray = [[NSMutableArray alloc] init]; | |
| 50 | - if (self.inputType == CNLiveActivePayInputTypePassword) { | |
| 51 | - //生成中间的点 | |
| 52 | - for (int i = 0; i < kDotCount; i++) { | |
| 53 | - UIView *dotView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.textField.frame) + (width - kDotCount) / 2 + i * width, CGRectGetMinY(self.textField.frame) + (self.frame.size.height - kDotSize.height) / 2, kDotSize.width, kDotSize.height)]; | |
| 54 | - dotView.backgroundColor = [UIColor blackColor]; | |
| 55 | - dotView.layer.cornerRadius = kDotSize.width / 2.0f; | |
| 56 | - dotView.clipsToBounds = YES; | |
| 57 | - dotView.hidden = YES; //先隐藏 | |
| 58 | - [self addSubview:dotView]; | |
| 59 | - //把创建的黑色点加入到数组中 | |
| 60 | - [self.dotArray addObject:dotView]; | |
| 61 | - } | |
| 62 | - }else{ | |
| 63 | - for (int i = 0; i < kDotCount; i++) { | |
| 64 | - UILabel *dotView = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.textField.frame) + (width - kDotCount) / 2 + i * width, CGRectGetMinY(self.textField.frame) + (self.frame.size.height - kDotSize.height) / 2, kDotSize.width, kDotSize.height)]; | |
| 65 | - dotView.backgroundColor = [UIColor whiteColor]; | |
| 66 | - dotView.textColor = kBlackColor; | |
| 67 | - dotView.font = [UIFont systemFontOfSize:17]; | |
| 68 | - dotView.font = [UIFont boldSystemFontOfSize:17]; | |
| 69 | - dotView.hidden = YES; //先隐藏 | |
| 70 | - [self addSubview:dotView]; | |
| 71 | - //把创建的黑色点加入到数组中 | |
| 72 | - [self.dotArray addObject:dotView]; | |
| 73 | - } | |
| 74 | - } | |
| 75 | -} | |
| 76 | - | |
| 77 | -- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string | |
| 78 | -{ | |
| 79 | - if([string isEqualToString:@"\n"]) { | |
| 80 | - //按回车关闭键盘 | |
| 81 | - [textField resignFirstResponder]; | |
| 82 | - return NO; | |
| 83 | - } else if(string.length == 0) { | |
| 84 | - //判断是不是删除键 | |
| 85 | - return YES; | |
| 86 | - }else if(textField.text.length >= kDotCount) { | |
| 87 | - //输入的字符个数大于6,则无法继续输入,返回NO表示禁止输入 | |
| 88 | - NSLog(@"输入的字符个数大于6,忽略输入"); | |
| 89 | - return NO; | |
| 90 | - } else { | |
| 91 | - return YES; | |
| 92 | - } | |
| 93 | -} | |
| 94 | - | |
| 95 | -/** | |
| 96 | - * 清除密码 | |
| 97 | - */ | |
| 98 | -- (void)clearUpPassword | |
| 99 | -{ | |
| 100 | - self.textField.text = @""; | |
| 101 | - [self textFieldDidChange:self.textField]; | |
| 102 | -} | |
| 103 | --(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event | |
| 104 | -{ | |
| 105 | - [super touchesBegan:touches withEvent:event]; | |
| 106 | - [self.textField becomeFirstResponder]; | |
| 107 | -} | |
| 108 | -/** | |
| 109 | - * 重置显示的点 | |
| 110 | - */ | |
| 111 | -- (void)textFieldDidChange:(UITextField *)textField | |
| 112 | -{ | |
| 113 | - for (UIView *dotView in self.dotArray) { | |
| 114 | - dotView.hidden = YES; | |
| 115 | - } | |
| 116 | - for (int i = 0; i < textField.text.length; i++) { | |
| 117 | - ((UIView *)[self.dotArray objectAtIndex:i]).hidden = NO; | |
| 118 | - if (self.inputType == CNLiveActivePayInputTypeVerification) { | |
| 119 | - UILabel * dotLabel = (UILabel *)[self.dotArray objectAtIndex:i]; | |
| 120 | - dotLabel.text = [textField.text substringWithRange:NSMakeRange(i, 1)]; | |
| 121 | - } | |
| 122 | - } | |
| 123 | -// if (textField.text.length == kDotCount) { | |
| 124 | - NSLog(@"输入完毕"); | |
| 125 | - NSLog(@"获取的输入数字====>%@",textField.text); | |
| 126 | - if (self.passwordResultBlock) self.passwordResultBlock(textField.text); | |
| 127 | -// } | |
| 128 | -} | |
| 129 | -#pragma mark - init | |
| 130 | - | |
| 131 | -- (CNTextField *)textField | |
| 132 | -{ | |
| 133 | - if (!_textField) { | |
| 134 | - _textField = [[CNTextField alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; | |
| 135 | - _textField.backgroundColor = [UIColor whiteColor]; | |
| 136 | - //输入的文字颜色为白色 | |
| 137 | - _textField.textColor = [UIColor whiteColor]; | |
| 138 | - //输入框光标的颜色为白色 | |
| 139 | - _textField.tintColor = [UIColor whiteColor]; | |
| 140 | - _textField.delegate = self; | |
| 141 | - _textField.secureTextEntry = YES; | |
| 142 | - _textField.autocapitalizationType = UITextAutocapitalizationTypeNone; | |
| 143 | - _textField.keyboardType = UIKeyboardTypeNumberPad; | |
| 144 | - _textField.layer.borderColor = [[UIColor grayColor] CGColor]; | |
| 145 | - _textField.layer.borderWidth = 1; | |
| 146 | - [_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; | |
| 147 | - [self addSubview:_textField]; | |
| 148 | - } | |
| 149 | - return _textField; | |
| 150 | -} | |
| 151 | - | |
| 152 | -@end |
CNLiveCMineModule/Classes/TZPhotoCell/LxGridViewFlowLayout.h deleted
100755 → 0
| 1 | -// | |
| 2 | -// LxGridViewFlowLayout.h | |
| 3 | -// LxGridView | |
| 4 | -// | |
| 5 | - | |
| 6 | -#import <UIKit/UIKit.h> | |
| 7 | - | |
| 8 | -/* | |
| 9 | - 此类来源于DeveloperLx的优秀开源项目:LxGridView | |
| 10 | - github链接:https://github.com/DeveloperLx/LxGridView | |
| 11 | - 我对这个类的代码做了一些修改; | |
| 12 | - 感谢DeveloperLx的优秀代码~ | |
| 13 | - */ | |
| 14 | - | |
| 15 | -@interface LxGridViewFlowLayout : UICollectionViewFlowLayout | |
| 16 | - | |
| 17 | -@property (nonatomic,assign) BOOL panGestureRecognizerEnable; | |
| 18 | - | |
| 19 | -@end | |
| 20 | - | |
| 21 | -@protocol LxGridViewDataSource <UICollectionViewDataSource> | |
| 22 | - | |
| 23 | -@optional | |
| 24 | - | |
| 25 | -- (void)collectionView:(UICollectionView *)collectionView | |
| 26 | - itemAtIndexPath:(NSIndexPath *)sourceIndexPath | |
| 27 | - willMoveToIndexPath:(NSIndexPath *)destinationIndexPath; | |
| 28 | -- (void)collectionView:(UICollectionView *)collectionView | |
| 29 | - itemAtIndexPath:(NSIndexPath *)sourceIndexPath | |
| 30 | - didMoveToIndexPath:(NSIndexPath *)destinationIndexPath; | |
| 31 | - | |
| 32 | -- (BOOL)collectionView:(UICollectionView *)collectionView | |
| 33 | -canMoveItemAtIndexPath:(NSIndexPath *)indexPath; | |
| 34 | -- (BOOL)collectionView:(UICollectionView *)collectionView | |
| 35 | - itemAtIndexPath:(NSIndexPath *)sourceIndexPath | |
| 36 | - canMoveToIndexPath:(NSIndexPath *)destinationIndexPath; | |
| 37 | - | |
| 38 | -@end | |
| 39 | - | |
| 40 | -@protocol LxGridViewDelegateFlowLayout <UICollectionViewDelegateFlowLayout> | |
| 41 | - | |
| 42 | -@optional | |
| 43 | - | |
| 44 | -- (void)collectionView:(UICollectionView *)collectionView | |
| 45 | - layout:(UICollectionViewLayout *)collectionViewLayout | |
| 46 | -willBeginDraggingItemAtIndexPath:(NSIndexPath *)indexPath; | |
| 47 | -- (void)collectionView:(UICollectionView *)collectionView | |
| 48 | - layout:(UICollectionViewLayout *)collectionViewLayout | |
| 49 | -didBeginDraggingItemAtIndexPath:(NSIndexPath *)indexPath; | |
| 50 | -- (void)collectionView:(UICollectionView *)collectionView | |
| 51 | - layout:(UICollectionViewLayout *)collectionViewLayout | |
| 52 | -willEndDraggingItemAtIndexPath:(NSIndexPath *)indexPath; | |
| 53 | -- (void)collectionView:(UICollectionView *)collectionView | |
| 54 | - layout:(UICollectionViewLayout *)collectionViewLayout | |
| 55 | -didEndDraggingItemAtIndexPath:(NSIndexPath *)indexPath; | |
| 56 | - | |
| 57 | -@end | |
| 58 | 0 | \ No newline at end of file |
CNLiveCMineModule/Classes/TZPhotoCell/LxGridViewFlowLayout.m deleted
100755 → 0
| 1 | -// | |
| 2 | -// LxGridViewFlowLayout.m | |
| 3 | -// LxGridView | |
| 4 | -// | |
| 5 | - | |
| 6 | -#import "LxGridViewFlowLayout.h" | |
| 7 | -#import "TZTestNewCell.h" | |
| 8 | -#import "UIView+TZLayout.h" | |
| 9 | - | |
| 10 | -#define stringify __STRING | |
| 11 | - | |
| 12 | -static CGFloat const PRESS_TO_MOVE_MIN_DURATION = 0.1; | |
| 13 | -static CGFloat const MIN_PRESS_TO_BEGIN_EDITING_DURATION = 0.6; | |
| 14 | - | |
| 15 | -CG_INLINE CGPoint CGPointOffset(CGPoint point, CGFloat dx, CGFloat dy) | |
| 16 | -{ | |
| 17 | - return CGPointMake(point.x + dx, point.y + dy); | |
| 18 | -} | |
| 19 | - | |
| 20 | -/* | |
| 21 | - 此类来源于DeveloperLx的优秀开源项目:LxGridView | |
| 22 | - github链接:https://github.com/DeveloperLx/LxGridView | |
| 23 | - 我对这个类的代码做了一些修改; | |
| 24 | - 感谢DeveloperLx的优秀代码~ | |
| 25 | - */ | |
| 26 | - | |
| 27 | -@interface LxGridViewFlowLayout () <UIGestureRecognizerDelegate> | |
| 28 | - | |
| 29 | -@property (nonatomic,readonly) id<LxGridViewDataSource> dataSource; | |
| 30 | -@property (nonatomic,readonly) id<LxGridViewDelegateFlowLayout> delegate; | |
| 31 | - | |
| 32 | -@end | |
| 33 | - | |
| 34 | -@implementation LxGridViewFlowLayout | |
| 35 | -{ | |
| 36 | - UILongPressGestureRecognizer * _longPressGestureRecognizer; | |
| 37 | - UIPanGestureRecognizer * _panGestureRecognizer; | |
| 38 | - NSIndexPath * _movingItemIndexPath; | |
| 39 | - UIView * _beingMovedPromptView; | |
| 40 | - CGPoint _sourceItemCollectionViewCellCenter; | |
| 41 | - | |
| 42 | - CADisplayLink * _displayLink; | |
| 43 | - CFTimeInterval _remainSecondsToBeginEditing; | |
| 44 | -} | |
| 45 | - | |
| 46 | -#pragma mark - setup | |
| 47 | - | |
| 48 | -- (void)dealloc | |
| 49 | -{ | |
| 50 | - [_displayLink invalidate]; | |
| 51 | - | |
| 52 | - [self removeGestureRecognizers]; | |
| 53 | - [self removeObserver:self forKeyPath:@stringify(collectionView)]; | |
| 54 | -} | |
| 55 | - | |
| 56 | -- (instancetype)init | |
| 57 | -{ | |
| 58 | - if (self = [super init]) { | |
| 59 | - [self setup]; | |
| 60 | - } | |
| 61 | - return self; | |
| 62 | -} | |
| 63 | - | |
| 64 | -- (instancetype)initWithCoder:(NSCoder *)coder | |
| 65 | -{ | |
| 66 | - if (self = [super initWithCoder:coder]) { | |
| 67 | - [self setup]; | |
| 68 | - } | |
| 69 | - return self; | |
| 70 | -} | |
| 71 | - | |
| 72 | -- (void)setup | |
| 73 | -{ | |
| 74 | - [self addObserver:self forKeyPath:@stringify(collectionView) options:NSKeyValueObservingOptionNew context:nil]; | |
| 75 | -} | |
| 76 | - | |
| 77 | -- (void)addGestureRecognizers | |
| 78 | -{ | |
| 79 | - self.collectionView.userInteractionEnabled = YES; | |
| 80 | - | |
| 81 | - _longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressGestureRecognizerTriggerd:)]; | |
| 82 | - _longPressGestureRecognizer.cancelsTouchesInView = NO; | |
| 83 | - _longPressGestureRecognizer.minimumPressDuration = PRESS_TO_MOVE_MIN_DURATION; | |
| 84 | - _longPressGestureRecognizer.delegate = self; | |
| 85 | - | |
| 86 | - for (UIGestureRecognizer * gestureRecognizer in self.collectionView.gestureRecognizers) { | |
| 87 | - if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) { | |
| 88 | - [gestureRecognizer requireGestureRecognizerToFail:_longPressGestureRecognizer]; | |
| 89 | - } | |
| 90 | - } | |
| 91 | - | |
| 92 | - [self.collectionView addGestureRecognizer:_longPressGestureRecognizer]; | |
| 93 | - | |
| 94 | - _panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureRecognizerTriggerd:)]; | |
| 95 | - _panGestureRecognizer.delegate = self; | |
| 96 | - [self.collectionView addGestureRecognizer:_panGestureRecognizer]; | |
| 97 | - | |
| 98 | - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil]; | |
| 99 | -} | |
| 100 | - | |
| 101 | -- (void)removeGestureRecognizers | |
| 102 | -{ | |
| 103 | - if (_longPressGestureRecognizer) { | |
| 104 | - if (_longPressGestureRecognizer.view) { | |
| 105 | - [_longPressGestureRecognizer.view removeGestureRecognizer:_longPressGestureRecognizer]; | |
| 106 | - } | |
| 107 | - _longPressGestureRecognizer = nil; | |
| 108 | - } | |
| 109 | - | |
| 110 | - if (_panGestureRecognizer) { | |
| 111 | - if (_panGestureRecognizer.view) { | |
| 112 | - [_panGestureRecognizer.view removeGestureRecognizer:_panGestureRecognizer]; | |
| 113 | - } | |
| 114 | - _panGestureRecognizer = nil; | |
| 115 | - } | |
| 116 | - | |
| 117 | - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil]; | |
| 118 | -} | |
| 119 | - | |
| 120 | -#pragma mark - getter and setter implementation | |
| 121 | - | |
| 122 | -- (id<LxGridViewDataSource>)dataSource | |
| 123 | -{ | |
| 124 | - return (id<LxGridViewDataSource>)self.collectionView.dataSource; | |
| 125 | -} | |
| 126 | - | |
| 127 | -- (id<LxGridViewDelegateFlowLayout>)delegate | |
| 128 | -{ | |
| 129 | - return (id<LxGridViewDelegateFlowLayout>)self.collectionView.delegate; | |
| 130 | -} | |
| 131 | - | |
| 132 | -#pragma mark - override UICollectionViewLayout methods | |
| 133 | - | |
| 134 | -- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect | |
| 135 | -{ | |
| 136 | - NSArray * layoutAttributesForElementsInRect = [super layoutAttributesForElementsInRect:rect]; | |
| 137 | - | |
| 138 | - for (UICollectionViewLayoutAttributes * layoutAttributes in layoutAttributesForElementsInRect) { | |
| 139 | - | |
| 140 | - if (layoutAttributes.representedElementCategory == UICollectionElementCategoryCell) { | |
| 141 | - layoutAttributes.hidden = [layoutAttributes.indexPath isEqual:_movingItemIndexPath]; | |
| 142 | - } | |
| 143 | - } | |
| 144 | - return layoutAttributesForElementsInRect; | |
| 145 | -} | |
| 146 | - | |
| 147 | -- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath | |
| 148 | -{ | |
| 149 | - UICollectionViewLayoutAttributes * layoutAttributes = [super layoutAttributesForItemAtIndexPath:indexPath]; | |
| 150 | - if (layoutAttributes.representedElementCategory == UICollectionElementCategoryCell) { | |
| 151 | - layoutAttributes.hidden = [layoutAttributes.indexPath isEqual:_movingItemIndexPath]; | |
| 152 | - } | |
| 153 | - return layoutAttributes; | |
| 154 | -} | |
| 155 | - | |
| 156 | -#pragma mark - gesture | |
| 157 | - | |
| 158 | -- (void)setPanGestureRecognizerEnable:(BOOL)panGestureRecognizerEnable | |
| 159 | -{ | |
| 160 | - _panGestureRecognizer.enabled = panGestureRecognizerEnable; | |
| 161 | -} | |
| 162 | - | |
| 163 | -- (BOOL)panGestureRecognizerEnable | |
| 164 | -{ | |
| 165 | - return _panGestureRecognizer.enabled; | |
| 166 | -} | |
| 167 | - | |
| 168 | -- (void)longPressGestureRecognizerTriggerd:(UILongPressGestureRecognizer *)longPress | |
| 169 | -{ | |
| 170 | - switch (longPress.state) { | |
| 171 | - case UIGestureRecognizerStatePossible: | |
| 172 | - break; | |
| 173 | - case UIGestureRecognizerStateBegan: | |
| 174 | - { | |
| 175 | - if (_displayLink == nil) { | |
| 176 | - _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTriggered:)]; | |
| 177 | - _displayLink.frameInterval = 6; | |
| 178 | - [_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; | |
| 179 | - | |
| 180 | - _remainSecondsToBeginEditing = MIN_PRESS_TO_BEGIN_EDITING_DURATION; | |
| 181 | - } | |
| 182 | - | |
| 183 | - _movingItemIndexPath = [self.collectionView indexPathForItemAtPoint:[longPress locationInView:self.collectionView]]; | |
| 184 | - if ([self.dataSource respondsToSelector:@selector(collectionView:canMoveItemAtIndexPath:)] && [self.dataSource collectionView:self.collectionView canMoveItemAtIndexPath:_movingItemIndexPath] == NO) { | |
| 185 | - _movingItemIndexPath = nil; | |
| 186 | - return; | |
| 187 | - } | |
| 188 | - | |
| 189 | - if ([self.delegate respondsToSelector:@selector(collectionView:layout:willBeginDraggingItemAtIndexPath:)]) { | |
| 190 | - [self.delegate collectionView:self.collectionView layout:self willBeginDraggingItemAtIndexPath:_movingItemIndexPath]; | |
| 191 | - } | |
| 192 | - | |
| 193 | - UICollectionViewCell *sourceCollectionViewCell = [self.collectionView cellForItemAtIndexPath:_movingItemIndexPath]; | |
| 194 | - TZTestNewCell *sourceCell = (TZTestNewCell *)sourceCollectionViewCell; | |
| 195 | - | |
| 196 | - _beingMovedPromptView = [[UIView alloc]initWithFrame:CGRectOffset(sourceCollectionViewCell.frame, -10, -10)]; | |
| 197 | - _beingMovedPromptView.tz_width += 20; | |
| 198 | - _beingMovedPromptView.tz_height += 20; | |
| 199 | - | |
| 200 | - sourceCollectionViewCell.highlighted = YES; | |
| 201 | - UIView * highlightedSnapshotView = [sourceCell snapshotView]; | |
| 202 | - highlightedSnapshotView.frame = _beingMovedPromptView.bounds; | |
| 203 | - highlightedSnapshotView.alpha = 1; | |
| 204 | - | |
| 205 | - sourceCollectionViewCell.highlighted = NO; | |
| 206 | - UIView * snapshotView = [sourceCell snapshotView]; | |
| 207 | - snapshotView.frame = _beingMovedPromptView.bounds; | |
| 208 | - snapshotView.alpha = 0; | |
| 209 | - | |
| 210 | - [_beingMovedPromptView addSubview:snapshotView]; | |
| 211 | - [_beingMovedPromptView addSubview:highlightedSnapshotView]; | |
| 212 | - [self.collectionView addSubview:_beingMovedPromptView]; | |
| 213 | - | |
| 214 | - _sourceItemCollectionViewCellCenter = sourceCollectionViewCell.center; | |
| 215 | - | |
| 216 | - typeof(self) __weak weakSelf = self; | |
| 217 | - [UIView animateWithDuration:0 | |
| 218 | - delay:0 | |
| 219 | - options:UIViewAnimationOptionBeginFromCurrentState | |
| 220 | - animations:^{ | |
| 221 | - | |
| 222 | - typeof(self) __strong strongSelf = weakSelf; | |
| 223 | - if (strongSelf) { | |
| 224 | - highlightedSnapshotView.alpha = 0; | |
| 225 | - snapshotView.alpha = 1; | |
| 226 | - } | |
| 227 | - } | |
| 228 | - completion:^(BOOL finished) { | |
| 229 | - | |
| 230 | - typeof(self) __strong strongSelf = weakSelf; | |
| 231 | - if (strongSelf) { | |
| 232 | - [highlightedSnapshotView removeFromSuperview]; | |
| 233 | - | |
| 234 | - if ([strongSelf.delegate respondsToSelector:@selector(collectionView:layout:didBeginDraggingItemAtIndexPath:)]) { | |
| 235 | - [strongSelf.delegate collectionView:strongSelf.collectionView layout:strongSelf didBeginDraggingItemAtIndexPath:_movingItemIndexPath]; | |
| 236 | - } | |
| 237 | - } | |
| 238 | - }]; | |
| 239 | - | |
| 240 | - [self invalidateLayout]; | |
| 241 | - } | |
| 242 | - break; | |
| 243 | - case UIGestureRecognizerStateChanged: | |
| 244 | - break; | |
| 245 | - case UIGestureRecognizerStateEnded: | |
| 246 | - case UIGestureRecognizerStateCancelled: | |
| 247 | - { | |
| 248 | - [_displayLink invalidate]; | |
| 249 | - _displayLink = nil; | |
| 250 | - | |
| 251 | - NSIndexPath * movingItemIndexPath = _movingItemIndexPath; | |
| 252 | - | |
| 253 | - if (movingItemIndexPath) { | |
| 254 | - if ([self.delegate respondsToSelector:@selector(collectionView:layout:willEndDraggingItemAtIndexPath:)]) { | |
| 255 | - [self.delegate collectionView:self.collectionView layout:self willEndDraggingItemAtIndexPath:movingItemIndexPath]; | |
| 256 | - } | |
| 257 | - | |
| 258 | - _movingItemIndexPath = nil; | |
| 259 | - _sourceItemCollectionViewCellCenter = CGPointZero; | |
| 260 | - | |
| 261 | - UICollectionViewLayoutAttributes * movingItemCollectionViewLayoutAttributes = [self layoutAttributesForItemAtIndexPath:movingItemIndexPath]; | |
| 262 | - | |
| 263 | - _longPressGestureRecognizer.enabled = NO; | |
| 264 | - | |
| 265 | - typeof(self) __weak weakSelf = self; | |
| 266 | - [UIView animateWithDuration:0.2 | |
| 267 | - delay:0 | |
| 268 | - options:UIViewAnimationOptionBeginFromCurrentState | |
| 269 | - animations:^{ | |
| 270 | - typeof(self) __strong strongSelf = weakSelf; | |
| 271 | - if (strongSelf) { | |
| 272 | - _beingMovedPromptView.center = movingItemCollectionViewLayoutAttributes.center; | |
| 273 | - } | |
| 274 | - } | |
| 275 | - completion:^(BOOL finished) { | |
| 276 | - | |
| 277 | - _longPressGestureRecognizer.enabled = YES; | |
| 278 | - | |
| 279 | - typeof(self) __strong strongSelf = weakSelf; | |
| 280 | - if (strongSelf) { | |
| 281 | - [_beingMovedPromptView removeFromSuperview]; | |
| 282 | - _beingMovedPromptView = nil; | |
| 283 | - [strongSelf invalidateLayout]; | |
| 284 | - | |
| 285 | - if ([strongSelf.delegate respondsToSelector:@selector(collectionView:layout:didEndDraggingItemAtIndexPath:)]) { | |
| 286 | - [strongSelf.delegate collectionView:strongSelf.collectionView layout:strongSelf didEndDraggingItemAtIndexPath:movingItemIndexPath]; | |
| 287 | - } | |
| 288 | - } | |
| 289 | - }]; | |
| 290 | - } | |
| 291 | - } | |
| 292 | - break; | |
| 293 | - case UIGestureRecognizerStateFailed: | |
| 294 | - break; | |
| 295 | - default: | |
| 296 | - break; | |
| 297 | - } | |
| 298 | -} | |
| 299 | - | |
| 300 | - | |
| 301 | -- (void)panGestureRecognizerTriggerd:(UIPanGestureRecognizer *)pan | |
| 302 | -{ | |
| 303 | - | |
| 304 | - switch (pan.state) { | |
| 305 | - case UIGestureRecognizerStatePossible: | |
| 306 | - break; | |
| 307 | - case UIGestureRecognizerStateBegan: | |
| 308 | - case UIGestureRecognizerStateChanged: | |
| 309 | - { | |
| 310 | - CGPoint panTranslation = [pan translationInView:self.collectionView]; | |
| 311 | - _beingMovedPromptView.center = CGPointOffset(_sourceItemCollectionViewCellCenter, panTranslation.x, panTranslation.y); | |
| 312 | - | |
| 313 | - NSIndexPath * sourceIndexPath = _movingItemIndexPath; | |
| 314 | - NSIndexPath * destinationIndexPath = [self.collectionView indexPathForItemAtPoint:_beingMovedPromptView.center]; | |
| 315 | - | |
| 316 | - if ((destinationIndexPath == nil) || [destinationIndexPath isEqual:sourceIndexPath]) { | |
| 317 | - return; | |
| 318 | - } | |
| 319 | - | |
| 320 | - if ([self.dataSource respondsToSelector:@selector(collectionView:itemAtIndexPath:canMoveToIndexPath:)] && [self.dataSource collectionView:self.collectionView itemAtIndexPath:sourceIndexPath canMoveToIndexPath:destinationIndexPath] == NO) { | |
| 321 | - return; | |
| 322 | - } | |
| 323 | - | |
| 324 | - if ([self.dataSource respondsToSelector:@selector(collectionView:itemAtIndexPath:willMoveToIndexPath:)]) { | |
| 325 | - [self.dataSource collectionView:self.collectionView itemAtIndexPath:sourceIndexPath willMoveToIndexPath:destinationIndexPath]; | |
| 326 | - } | |
| 327 | - | |
| 328 | - _movingItemIndexPath = destinationIndexPath; | |
| 329 | - | |
| 330 | - typeof(self) __weak weakSelf = self; | |
| 331 | - [self.collectionView performBatchUpdates:^{ | |
| 332 | - typeof(self) __strong strongSelf = weakSelf; | |
| 333 | - if (strongSelf) { | |
| 334 | - if (sourceIndexPath && destinationIndexPath) { | |
| 335 | - [strongSelf.collectionView deleteItemsAtIndexPaths:@[sourceIndexPath]]; | |
| 336 | - [strongSelf.collectionView insertItemsAtIndexPaths:@[destinationIndexPath]]; | |
| 337 | - } | |
| 338 | - } | |
| 339 | - } completion:^(BOOL finished) { | |
| 340 | - typeof(self) __strong strongSelf = weakSelf; | |
| 341 | - if ([strongSelf.dataSource respondsToSelector:@selector(collectionView:itemAtIndexPath:didMoveToIndexPath:)]) { | |
| 342 | - [strongSelf.dataSource collectionView:strongSelf.collectionView itemAtIndexPath:sourceIndexPath didMoveToIndexPath:destinationIndexPath]; | |
| 343 | - } | |
| 344 | - }]; | |
| 345 | - } | |
| 346 | - break; | |
| 347 | - case UIGestureRecognizerStateEnded: | |
| 348 | - break; | |
| 349 | - case UIGestureRecognizerStateCancelled: | |
| 350 | - break; | |
| 351 | - case UIGestureRecognizerStateFailed: | |
| 352 | - break; | |
| 353 | - default: | |
| 354 | - break; | |
| 355 | - } | |
| 356 | -} | |
| 357 | - | |
| 358 | -- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer | |
| 359 | -{ | |
| 360 | - if ([_panGestureRecognizer isEqual:gestureRecognizer]) { | |
| 361 | - return _movingItemIndexPath != nil; | |
| 362 | - } | |
| 363 | - return [self panGestureRecognizerEnable]; | |
| 364 | -} | |
| 365 | - | |
| 366 | -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer | |
| 367 | -{ | |
| 368 | - // only _longPressGestureRecognizer and _panGestureRecognizer can recognize simultaneously | |
| 369 | - if ([_longPressGestureRecognizer isEqual:gestureRecognizer]) { | |
| 370 | - return [_panGestureRecognizer isEqual:otherGestureRecognizer]; | |
| 371 | - } | |
| 372 | - if ([_panGestureRecognizer isEqual:gestureRecognizer]) { | |
| 373 | - return [_longPressGestureRecognizer isEqual:otherGestureRecognizer]; | |
| 374 | - } | |
| 375 | - return NO; | |
| 376 | -} | |
| 377 | - | |
| 378 | -#pragma mark - displayLink | |
| 379 | - | |
| 380 | -- (void)displayLinkTriggered:(CADisplayLink *)displayLink | |
| 381 | -{ | |
| 382 | - if (_remainSecondsToBeginEditing <= 0) { | |
| 383 | - [_displayLink invalidate]; | |
| 384 | - _displayLink = nil; | |
| 385 | - } | |
| 386 | - | |
| 387 | - _remainSecondsToBeginEditing = _remainSecondsToBeginEditing - 0.1; | |
| 388 | -} | |
| 389 | - | |
| 390 | -#pragma mark - KVO and notification | |
| 391 | - | |
| 392 | -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context | |
| 393 | -{ | |
| 394 | - if ([keyPath isEqualToString:@stringify(collectionView)]) { | |
| 395 | - if (self.collectionView) { | |
| 396 | - [self addGestureRecognizers]; | |
| 397 | - } | |
| 398 | - else { | |
| 399 | - [self removeGestureRecognizers]; | |
| 400 | - } | |
| 401 | - } | |
| 402 | -} | |
| 403 | - | |
| 404 | -- (void)applicationWillResignActive:(NSNotification *)notificaiton | |
| 405 | -{ | |
| 406 | - _panGestureRecognizer.enabled = NO; | |
| 407 | - _panGestureRecognizer.enabled = YES; | |
| 408 | -} | |
| 409 | - | |
| 410 | -@end |
CNLiveCMineModule/Classes/TZPhotoCell/TZTestNewCell.h deleted
100644 → 0
| 1 | -// | |
| 2 | -// TZTestNewCell.h | |
| 3 | -// CNLiveNetAdd | |
| 4 | -// | |
| 5 | -// Created by open on 2021/6/17. | |
| 6 | -// Copyright © 2021 cnlive. All rights reserved. | |
| 7 | -// | |
| 8 | - | |
| 9 | -#import <UIKit/UIKit.h> | |
| 10 | - | |
| 11 | -NS_ASSUME_NONNULL_BEGIN | |
| 12 | - | |
| 13 | -@interface TZTestNewCell : UICollectionViewCell | |
| 14 | -@property (nonatomic, strong) UIImageView *imageView; | |
| 15 | -@property (nonatomic, strong) UIImageView *videoImageView; | |
| 16 | -@property (nonatomic, strong) UIButton *deleteBtn; | |
| 17 | -@property (nonatomic, strong) UILabel *gifLable; | |
| 18 | -@property (nonatomic, assign) NSInteger row; | |
| 19 | -@property (nonatomic, strong) id asset; | |
| 20 | - | |
| 21 | -//zx | |
| 22 | -@property (nonatomic, strong) UILabel *addPicLable; | |
| 23 | -- (UIView *)snapshotView; | |
| 24 | -@end | |
| 25 | - | |
| 26 | -NS_ASSUME_NONNULL_END |
CNLiveCMineModule/Classes/TZPhotoCell/TZTestNewCell.m deleted
100644 → 0
| 1 | -// | |
| 2 | -// TZTestNewCell.m | |
| 3 | -// CNLiveNetAdd | |
| 4 | -// | |
| 5 | -// Created by open on 2021/6/17. | |
| 6 | -// Copyright © 2021 cnlive. All rights reserved. | |
| 7 | -// | |
| 8 | - | |
| 9 | -#import "TZTestNewCell.h" | |
| 10 | -#import "UIView+TZLayout.h" | |
| 11 | -#import <Photos/Photos.h> | |
| 12 | -#import <AssetsLibrary/AssetsLibrary.h> | |
| 13 | -#import "TZImagePickerController.h" | |
| 14 | -#import "UIColor+CNLiveExtension.h" | |
| 15 | - | |
| 16 | -@implementation TZTestNewCell | |
| 17 | -- (instancetype)initWithFrame:(CGRect)frame { | |
| 18 | - self = [super initWithFrame:frame]; | |
| 19 | - if (self) { | |
| 20 | - self.backgroundColor = [UIColor whiteColor]; | |
| 21 | - _imageView = [[UIImageView alloc] init]; | |
| 22 | - _imageView.backgroundColor = [UIColor colorWithWhite:1.000 alpha:0.500]; | |
| 23 | - _imageView.contentMode = UIViewContentModeScaleAspectFill; | |
| 24 | - [self addSubview:_imageView]; | |
| 25 | - self.clipsToBounds = YES; | |
| 26 | - | |
| 27 | - _videoImageView = [[UIImageView alloc] init]; | |
| 28 | - _videoImageView.image = [UIImage imageNamed:@"fb_bof"];//[UIImage imageNamedFromMyBundle:@"MMVideoPreviewPlay"] | |
| 29 | - _videoImageView.contentMode = UIViewContentModeScaleAspectFill; | |
| 30 | - _videoImageView.hidden = YES; | |
| 31 | - [self addSubview:_videoImageView]; | |
| 32 | - | |
| 33 | - _deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 34 | - [_deleteBtn setImage:[UIImage imageNamed:@"fb_shanchu"] forState:UIControlStateNormal];//photo_delete | |
| 35 | - _deleteBtn.imageEdgeInsets = UIEdgeInsetsMake(-10, 0, 0, -10); | |
| 36 | - _deleteBtn.alpha = 0.6; | |
| 37 | - [self addSubview:_deleteBtn]; | |
| 38 | - | |
| 39 | - _gifLable = [[UILabel alloc] init]; | |
| 40 | - _gifLable.text = @"GIF"; | |
| 41 | - _gifLable.textColor = [UIColor whiteColor]; | |
| 42 | - _gifLable.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.8]; | |
| 43 | - _gifLable.textAlignment = NSTextAlignmentCenter; | |
| 44 | - _gifLable.font = [UIFont systemFontOfSize:10]; | |
| 45 | - [self addSubview:_gifLable]; | |
| 46 | - | |
| 47 | - _addPicLable = [[UILabel alloc] init]; | |
| 48 | - _addPicLable.text = @""; | |
| 49 | - _addPicLable.textColor = CNLiveColorWithHexString(@"#FFAAAAAA"); | |
| 50 | - _addPicLable.textAlignment = NSTextAlignmentCenter; | |
| 51 | - _addPicLable.font = [UIFont systemFontOfSize:12]; | |
| 52 | - [self addSubview:_addPicLable]; | |
| 53 | - _addPicLable.hidden = YES; | |
| 54 | - } | |
| 55 | - return self; | |
| 56 | -} | |
| 57 | - | |
| 58 | -- (void)layoutSubviews { | |
| 59 | - [super layoutSubviews]; | |
| 60 | - _imageView.frame = self.bounds; | |
| 61 | - _gifLable.frame = CGRectMake(self.tz_width - 25, self.tz_height - 14, 25, 14); | |
| 62 | - _deleteBtn.frame = CGRectMake(self.tz_width - 36, 0, 36, 36); | |
| 63 | - CGFloat width = self.tz_width / 3.0; | |
| 64 | - _videoImageView.frame = CGRectMake(width, width, width, width); | |
| 65 | - [_addPicLable mas_makeConstraints:^(MASConstraintMaker *make) { | |
| 66 | - make.centerX.mas_equalTo(self.mas_centerX); | |
| 67 | - make.bottom.mas_equalTo(self.mas_bottom).mas_offset(-24); | |
| 68 | - }]; | |
| 69 | -} | |
| 70 | - | |
| 71 | -- (void)setAsset:(id)asset { | |
| 72 | - _asset = asset; | |
| 73 | - if ([asset isKindOfClass:[PHAsset class]]) { | |
| 74 | - PHAsset *phAsset = asset; | |
| 75 | - _videoImageView.hidden = phAsset.mediaType != PHAssetMediaTypeVideo; | |
| 76 | - _gifLable.hidden = ![[phAsset valueForKey:@"filename"] cn_containsString:@"GIF"]; | |
| 77 | - } else if ([asset isKindOfClass:[ALAsset class]]) { | |
| 78 | - ALAsset *alAsset = asset; | |
| 79 | - _videoImageView.hidden = ![[alAsset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]; | |
| 80 | - _gifLable.hidden = YES; | |
| 81 | - } | |
| 82 | - } | |
| 83 | - | |
| 84 | -- (void)setRow:(NSInteger)row { | |
| 85 | - _row = row; | |
| 86 | - _deleteBtn.tag = row; | |
| 87 | -} | |
| 88 | - | |
| 89 | -- (UIView *)snapshotView { | |
| 90 | - UIView *snapshotView = [[UIView alloc]init]; | |
| 91 | - | |
| 92 | - UIView *cellSnapshotView = nil; | |
| 93 | - | |
| 94 | - if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) { | |
| 95 | - cellSnapshotView = [self snapshotViewAfterScreenUpdates:NO]; | |
| 96 | - } else { | |
| 97 | - CGSize size = CGSizeMake(self.bounds.size.width + 20, self.bounds.size.height + 20); | |
| 98 | - UIGraphicsBeginImageContextWithOptions(size, self.opaque, 0); | |
| 99 | - [self.layer renderInContext:UIGraphicsGetCurrentContext()]; | |
| 100 | - UIImage * cellSnapshotImage = UIGraphicsGetImageFromCurrentImageContext(); | |
| 101 | - UIGraphicsEndImageContext(); | |
| 102 | - cellSnapshotView = [[UIImageView alloc]initWithImage:cellSnapshotImage]; | |
| 103 | - } | |
| 104 | - | |
| 105 | - snapshotView.frame = CGRectMake(0, 0, cellSnapshotView.frame.size.width, cellSnapshotView.frame.size.height); | |
| 106 | - cellSnapshotView.frame = CGRectMake(0, 0, cellSnapshotView.frame.size.width, cellSnapshotView.frame.size.height); | |
| 107 | - | |
| 108 | - [snapshotView addSubview:cellSnapshotView]; | |
| 109 | - return snapshotView; | |
| 110 | -} | |
| 111 | - | |
| 112 | -@end |
CNLiveCMineModule/Classes/TZPhotoCell/Tools/ZXConst.h deleted
100644 → 0
| 1 | -// ZXConst.h :引用所有的全局常量 | |
| 2 | - | |
| 3 | -#import <UIKit/UIKit.h> | |
| 4 | - | |
| 5 | -/** 通用的间距值 */ | |
| 6 | -UIKIT_EXTERN CGFloat const ZXMargin; | |
| 7 | - | |
| 8 | -UIKIT_EXTERN CGFloat const ZXShareHeight; | |
| 9 | -//UIKIT_EXTERN CGFloat const iconViewHeight;//头像的高度 | |
| 10 | -///** 视频tag2000 */ | |
| 11 | -//UIKIT_EXTERN CGFloat const CNVideoTag; | |
| 12 | -// | |
| 13 | -///** 图片tag1000 */ | |
| 14 | -//UIKIT_EXTERN CGFloat const CNPictureTag; | |
| 15 | -// | |
| 16 | -///** 网络请求超时时间 */ | |
| 17 | -//UIKIT_EXTERN CGFloat const kTimeoutInterval; | |
| 18 | -// | |
| 19 | -//UIKIT_EXTERN CGFloat CNMaxContentLabelHeight; | |
| 20 | - | |
| 21 | -//////////////////////////////////////////////////////// | |
| 22 | -//////////// App | |
| 23 | -//////////////////////////////////////////////////////// | |
| 24 | -// AppStore中AppID用于跳转AppStore下载/评分 | |
| 25 | -#define AppStoreAppId @"1337575478" | |
| 26 | - | |
| 27 | -// 请求查询app在AppStore的上架信息 | |
| 28 | -#define AppStoreAppInfo @"https://itunes.apple.com/lookup?id=1337575478" | |
| 29 | - | |
| 30 | -// yes:显示欢迎页 no:不显示欢迎页 | |
| 31 | -#define AppShowGuidePage @"no"//yes no | |
| 32 | - | |
| 33 | -//上传手机通讯录和生成订单二维码时,DES加密key | |
| 34 | -#define AppDESKey @"cnliveIm" |
CNLiveCMineModule/Classes/TZPhotoCell/Tools/ZXConst.m deleted
100644 → 0
| 1 | -#import "ZXConst.h" | |
| 2 | - | |
| 3 | -/** 通用的间距值 */ | |
| 4 | -CGFloat const ZXMargin = 10; | |
| 5 | -CGFloat const ZXShareHeight = 60; | |
| 6 | -CGFloat const iconViewHeight = 40; | |
| 7 | -/** 视频tag */ | |
| 8 | -CGFloat const CNVideoTag = 2000; | |
| 9 | - | |
| 10 | -/** 图片tag */ | |
| 11 | -CGFloat const CNPictureTag = 1000; | |
| 12 | - | |
| 13 | -/** 通用的小间距值 */ | |
| 14 | -CGFloat const ZXSmallMargin = ZXMargin * 0.5; | |
| 15 | - | |
| 16 | -/** 网络请求超时时间 */ | |
| 17 | -CGFloat const kTimeoutInterval = 10.0; | |
| 18 | - | |
| 19 | -/** 标题字体字号 */ | |
| 20 | -CGFloat const kTitleFont = 16.0; | |
| 21 | - | |
| 22 | -/** 内容字体字号 */ | |
| 23 | -CGFloat const kContentFont = 14.0; | |
| 24 | - | |
| 25 | -/** 详细内容字体字号 */ | |
| 26 | -CGFloat const kDetailContentFont = 12.0; | |
| 27 | - | |
| 28 | -CGFloat CNMaxContentLabelHeight = 0; | |
| 29 | - |
Example/CNLiveCMineModule.xcodeproj/project.pbxproj
| ... | ... | @@ -401,6 +401,7 @@ |
| 401 | 401 | "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework", |
| 402 | 402 | "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework", |
| 403 | 403 | "${PODS_ROOT}/TXIMSDK_iOS/ImSDK.framework", |
| 404 | + "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework", | |
| 404 | 405 | "${BUILT_PRODUCTS_DIR}/YBImageBrowser/YBImageBrowser.framework", |
| 405 | 406 | "${BUILT_PRODUCTS_DIR}/YYAsyncLayer/YYAsyncLayer.framework", |
| 406 | 407 | "${BUILT_PRODUCTS_DIR}/YYCache/YYCache.framework", |
| ... | ... | @@ -457,6 +458,7 @@ |
| 457 | 458 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework", |
| 458 | 459 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SSZipArchive.framework", |
| 459 | 460 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImSDK.framework", |
| 461 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TZImagePickerController.framework", | |
| 460 | 462 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YBImageBrowser.framework", |
| 461 | 463 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYAsyncLayer.framework", |
| 462 | 464 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCache.framework", | ... | ... |