Commit a1f1ca918a8dad15cda7c1d2a3020153606b8aa5

Authored by yinqiaojuan
1 parent 8f576444

个人资料认证开发

Showing 52 changed files with 2518 additions and 1 deletions
.gitignore 0 → 100644
  1 +# OS X
  2 +.DS_Store
  3 +
  4 +# Xcode
  5 +build/
  6 +Products/
  7 +*.pbxuser
  8 +!default.pbxuser
  9 +*.mode1v3
  10 +!default.mode1v3
  11 +*.mode2v3
  12 +!default.mode2v3
  13 +*.perspectivev3
  14 +!default.perspectivev3
  15 +xcuserdata/
  16 +*.xccheckout
  17 +profile
  18 +*.moved-aside
  19 +DerivedData
  20 +*.hmap
  21 +*.ipa
  22 +
  23 +# Bundler
  24 +.bundle
  25 +
  26 +# Add this line if you want to avoid checking in source code from Carthage dependencies.
  27 +# Carthage/Checkouts
  28 +
  29 +Carthage/Build
  30 +
  31 +# We recommend against adding the Pods directory to your .gitignore. However
  32 +# you should judge for yourself, the pros and cons are mentioned at:
  33 +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
  34 +#
  35 +# Note: if you ignore the Pods directory, make sure to uncomment
  36 +# `pod install` in .travis.yml
  37 +#
  38 +# Pods/
... ...
.travis.yml 0 → 100644
  1 +# references:
  2 +# * https://www.objc.io/issues/6-build-tools/travis-ci/
  3 +# * https://github.com/supermarin/xcpretty#usage
  4 +
  5 +osx_image: xcode7.3
  6 +language: objective-c
  7 +# cache: cocoapods
  8 +# podfile: Example/Podfile
  9 +# before_install:
  10 +# - gem install cocoapods # Since Travis is not always on latest version
  11 +# - pod install --project-directory=Example
  12 +script:
  13 +- set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/CNLiveBPersonalVerificationModule.xcworkspace -scheme CNLiveBPersonalVerificationModule-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
  14 +- pod lib lint
... ...
CNLiveBPersonalVerificationModule.podspec 0 → 100644
  1 +#
  2 +# Be sure to run `pod lib lint CNLiveBPersonalVerificationModule.podspec' to ensure this is a
  3 +# valid spec before submitting.
  4 +#
  5 +# Any lines starting with a # are optional, but their use is encouraged
  6 +# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
  7 +#
  8 +
  9 +Pod::Spec.new do |s|
  10 + s.name = 'CNLiveBPersonalVerificationModule'
  11 + s.version = '0.0.1'
  12 + s.summary = 'B端个人资料认证开发'
  13 +
  14 +# This description is used to generate tags and improve search results.
  15 +# * Think: What does it do? Why did you write it? What is the focus?
  16 +# * Try to keep it short, snappy and to the point.
  17 +# * Write the description between the DESC delimiters below.
  18 +# * Finally, don't worry about the indent, CocoaPods strips it!
  19 +
  20 + s.description = <<-DESC
  21 +TODO: Add long description of the pod here.
  22 + DESC
  23 +
  24 + s.homepage = 'http://bj.gitlab.cnlive.com/ios-team/CNLiveBPersonalVerificationModule'
  25 + # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  26 + s.license = { :type => 'MIT', :file => 'LICENSE' }
  27 + s.author = { 'dawanzi' => '1427945373@qq.com' }
  28 + s.source = { :git => 'http://bj.gitlab.cnlive.com/ios-team/CNLiveBPersonalVerificationModule.git', :tag => s.version.to_s }
  29 + # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
  30 +
  31 + s.ios.deployment_target = '9.0'
  32 +
  33 +# s.source_files = 'CNLiveBPersonalVerificationModule/Classes/**/*'
  34 +s.subspec 'Controller' do |controller|
  35 + controller.source_files = 'CNLiveBPersonalVerificationModule/Classes/Controller/*.{h,m}'
  36 +# controller.dependency 'CNLiveBPersonalVerificationModule/ViewModel'
  37 +# controller.dependency 'CNLiveBPersonalVerificationModule/Model'
  38 + controller.dependency 'CNLiveBPersonalVerificationModule/View'
  39 +end
  40 +s.subspec 'View' do |view|
  41 + view.source_files = 'CNLiveBPersonalVerificationModule/Classes/View/*.{h,m}'
  42 + view.dependency 'CNLiveBPersonalVerificationModule/ViewModel'
  43 + view.dependency 'CNLiveBPersonalVerificationModule/Model'
  44 +end
  45 +s.subspec 'Model' do |model|
  46 + model.source_files = 'CNLiveBPersonalVerificationModule/Classes/Model/*.{h,m}'
  47 +end
  48 +s.subspec 'ViewModel' do |viewModel|
  49 + viewModel.source_files = 'CNLiveBPersonalVerificationModule/Classes/ViewModel/*.{h,m}'
  50 +end
  51 +s.dependency 'CNLiveTripartiteManagement/Masonry'
  52 +s.dependency 'CNLiveTripartiteManagement/QMUIKit'
  53 +s.dependency 'CNLiveTripartiteManagement/MJExtension'
  54 +s.dependency 'CNLiveTripartiteManagement/SDWebImage'
  55 +s.dependency 'CNLiveTripartiteManagement/MJRefresh'
  56 +#基础库
  57 +s.dependency 'CNLiveBaseKit'
  58 +#基础类目
  59 +s.dependency 'CNLiveCommonCategory'
  60 +#基础UI
  61 +s.dependency 'CNLiveCustomUI'
  62 +#用户库
  63 + s.dependency 'CNLiveUserManagement'
  64 + #网络请求
  65 + s.dependency 'CNLiveRequestBastKit'
  66 +s.resource_bundles = {
  67 + 'CNLiveBPersonalVerificationModule' => ['CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle']
  68 +}
  69 +
  70 + # s.public_header_files = 'Pod/Classes/**/*.h'
  71 + s.frameworks = 'UIKit', 'Foundation'
  72 + # s.dependency 'AFNetworking', '~> 2.3'
  73 +end
... ...
CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/add@2x.png 0 → 100644

476 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/add@3x.png 0 → 100644

722 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/add_jigou@2x.png 0 → 100644

418 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/add_jigou@3x.png 0 → 100644

771 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/bitian@2x.png 0 → 100644

672 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/bitian@3x.png 0 → 100644

1.11 KB

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/delete-icon@2x.png 0 → 100644

1.89 KB

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/delete-icon@3x.png 0 → 100644

4.04 KB

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/delete@2x.png 0 → 100644

814 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/delete@3x.png 0 → 100644

1.31 KB

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/xinxi@2x.png 0 → 100644

909 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/xinxi@3x.png 0 → 100644

1.54 KB

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/xuanze@2x.png 0 → 100644

563 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/xuanze@3x.png 0 → 100644

914 Bytes

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/xzjg@2x.png 0 → 100644

1.16 KB

CNLiveBPersonalVerificationModule/Assets/CNLiveBPersonalVerificationModule.bundle/xzjg@3x.png 0 → 100644

2.27 KB

CNLiveBPersonalVerificationModule/Classes/Controller/CNBPersonalVerificationController.h 0 → 100644
  1 +//
  2 +// CNBPersonalVerificationController.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/7.
  6 +//
  7 +
  8 +#import <UIKit/UIKit.h>
  9 +
  10 +NS_ASSUME_NONNULL_BEGIN
  11 +
  12 +@interface CNBPersonalVerificationController : UIViewController
  13 +
  14 +@end
  15 +
  16 +NS_ASSUME_NONNULL_END
... ...
CNLiveBPersonalVerificationModule/Classes/Controller/CNBPersonalVerificationController.m 0 → 100644
  1 +//
  2 +// CNBPersonalVerificationController.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/7.
  6 +//
  7 +
  8 +#import "CNBPersonalVerificationController.h"
  9 +#import <QMUIKit/QMUIKit.h>
  10 +#import "UIColor+CNLiveExtension.h"
  11 +#import "CNLivePerAuthGetImage.h"
  12 +#import <Masonry/Masonry.h>
  13 +#import "CNLiveBaseKit.h"
  14 +#import "CNBPersonalVerificationCell.h"
  15 +#import "CNBPerAuthHeaderView.h"
  16 +#import "CNBIdentifierModel.h"
  17 +#import "MJExtension.h"
  18 +#import "CNBPerAuthFooterTBView.h"
  19 +#define CNBHeaderShowHeight 43
  20 +#define CNBAffiliationCellIdentifier @"CNBPersonalVerificationCell"
  21 +#define CNBCircleGroupIdentifier @"CNBCircleGroupCell"
  22 +#define CNBCircleAddGroupIdentifier @"CNBCircleAddGroupCell"
  23 +#define CNBAccountGroupIdentifier @"CNBAccountGroupCell"
  24 +#define CNBAddAccountGroupIdentifier @"CNBAddAccountGroupCell"
  25 +@interface CNBPersonalVerificationController ()<UITableViewDataSource,UITableViewDelegate>
  26 +@property (nonatomic, strong) QMUIButton *promptBtn; //提示View
  27 +@property (nonatomic, strong) UITableView *tableView;
  28 +@property (nonatomic, strong) NSMutableArray *sectionArray ; //有几个组 //存放字符串 0 不可删除 1可删除
  29 +@property (nonatomic, strong) CNBPerAuthFooterTBView *footerTBView;
  30 +@end
  31 +
  32 +@implementation CNBPersonalVerificationController
  33 +
  34 +- (void)viewDidLoad {
  35 + [super viewDidLoad];
  36 + self.title = @"填写机构资料";
  37 + self.sectionArray = [NSMutableArray array];
  38 + [self addData:@"0" addSection:@"0"];
  39 + [self configUI];
  40 + [self.view addSubview:self.tableView];
  41 + [self.tableView reloadData];
  42 +}
  43 +- (void)addData:(NSString *)isDelete addSection:(NSString *)addSection{
  44 + NSMutableArray *typeArray = [NSMutableArray array];
  45 + NSArray *array = @[
  46 + @{@"type":@"0",@"isDelete":@"0"},
  47 + @{@"type":@"1",@"isDelete":@"0"},
  48 + @{@"type":@"2",@"isDelete":@"0"},
  49 + @{@"type":@"3",@"isDelete":@"0"},
  50 + @{@"type":@"4",@"isDelete":@"0"}
  51 + ];
  52 + for (NSDictionary *dic in array) {
  53 + CNBTypeModel *model = [CNBTypeModel mj_objectWithKeyValues:dic];
  54 + [typeArray addObject:model];
  55 + }
  56 + NSArray *sectionArray = @[
  57 + @{@"isDelete":isDelete,@"addSection":addSection,@"typeArray":typeArray},
  58 + ];
  59 + for (NSDictionary *dic in sectionArray) {
  60 + CNBAddSectionModel *model = [CNBAddSectionModel mj_objectWithKeyValues:dic];
  61 + [self.sectionArray addObject:model];
  62 + }
  63 +}
  64 +#pragma mark - init
  65 +- (void)configUI {
  66 + __weak typeof(self) weakSelf = self;
  67 + [self.view addSubview:self.promptBtn];
  68 + [_promptBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  69 + make.left.right.mas_equalTo (weakSelf.view);
  70 + make.top.mas_equalTo(kNavigationBarHeight);
  71 + make.height.mas_equalTo(43);
  72 + }];
  73 +}
  74 +#pragma mark - tableDelegateAndtableDataSource
  75 +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  76 + return self.sectionArray.count;
  77 +}
  78 +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  79 + CNBAddSectionModel *model = self.sectionArray[section];
  80 + return model.typeArray.count;
  81 +}
  82 +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  83 + CNBAddSectionModel *sectionModel = self.sectionArray[indexPath.section];
  84 + CNBTypeModel *model = sectionModel.typeArray[indexPath.row];
  85 + __weak typeof(self) weakSelf = self;
  86 + if ([model.type isEqualToString:@"0"]) {
  87 + CNBPersonalVerificationCell *cell = [tableView dequeueReusableCellWithIdentifier:CNBAffiliationCellIdentifier];
  88 + if (!cell) {
  89 + cell = [[CNBPersonalVerificationCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CNBAffiliationCellIdentifier];
  90 + }
  91 + return cell;
  92 + }else if ([model.type isEqualToString:@"1"]) {
  93 + CNBCircleGroupCell *circleCell = [tableView dequeueReusableCellWithIdentifier:CNBCircleGroupIdentifier];
  94 + if (!circleCell) {
  95 + circleCell = [[CNBCircleGroupCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CNBCircleGroupIdentifier];
  96 + }
  97 + circleCell.typeModel = sectionModel.typeArray[indexPath.row];
  98 + __block NSMutableArray *typeArray = [NSMutableArray arrayWithArray:sectionModel.typeArray];
  99 + circleCell.circleDeleteBlock = ^{
  100 + [typeArray removeObjectAtIndex:indexPath.row];
  101 + sectionModel.typeArray = typeArray;
  102 + [weakSelf.tableView reloadData];
  103 + };
  104 + return circleCell;
  105 + }else if ([model.type isEqualToString:@"2"]) {
  106 + CNBCircleAddGroupCell *circleAddCell = [tableView dequeueReusableCellWithIdentifier:CNBCircleAddGroupIdentifier];
  107 + if (!circleAddCell) {
  108 + circleAddCell = [[CNBCircleAddGroupCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CNBCircleAddGroupIdentifier];
  109 + }
  110 + __block NSMutableArray *circleArray = [NSMutableArray array];
  111 + __block NSMutableArray *typeArray = [NSMutableArray arrayWithArray:sectionModel.typeArray];
  112 + circleAddCell.addCircleGroupBlock = ^{
  113 + CNBTypeModel *addModel = [[CNBTypeModel alloc]init];
  114 + addModel.type = @"1";
  115 + addModel.isDelete = @"1";
  116 + for (CNBTypeModel *model in typeArray) {
  117 + if ([model.type isEqualToString:@"1"]) {
  118 + [circleArray addObject:model];
  119 + }
  120 + }
  121 + [typeArray insertObject:addModel atIndex:circleArray.count + 1];
  122 + sectionModel.typeArray = typeArray;
  123 + [weakSelf.tableView reloadData];
  124 + };
  125 + return circleAddCell;
  126 + }else if ([model.type isEqualToString:@"3"]) {
  127 + CNBAccountGroupCell *accountCell = [tableView dequeueReusableCellWithIdentifier:CNBAccountGroupIdentifier];
  128 + if (!accountCell) {
  129 + accountCell = [[CNBAccountGroupCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CNBAccountGroupIdentifier];
  130 + }
  131 + __block NSMutableArray *accountTypeArr = [NSMutableArray arrayWithArray:sectionModel.typeArray];
  132 + __weak typeof(self) weakSelf = self;
  133 + accountCell.accountTypeModel = sectionModel.typeArray[indexPath.row];
  134 + accountCell.accountDeleteBlock = ^{
  135 + [accountTypeArr removeObjectAtIndex:indexPath.row];
  136 + sectionModel.typeArray = accountTypeArr;
  137 + [weakSelf.tableView reloadData];
  138 + };
  139 + return accountCell;
  140 + }else if ([model.type isEqualToString:@"4"]) {
  141 + CNBAddAccountGroupCell *addAccountCell = [tableView dequeueReusableCellWithIdentifier:CNBAddAccountGroupIdentifier];
  142 + if (!addAccountCell) {
  143 + addAccountCell = [[CNBAddAccountGroupCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CNBAddAccountGroupIdentifier];
  144 + }
  145 + __block NSMutableArray *addGroupArray = [NSMutableArray arrayWithArray:sectionModel.typeArray];
  146 + addAccountCell.addAccountGroupBlock = ^{
  147 + CNBTypeModel *model = [[CNBTypeModel alloc]init];
  148 + model.type = @"3";
  149 + model.isDelete = @"1";
  150 + [addGroupArray insertObject:model atIndex:addGroupArray.count - 1];
  151 + sectionModel.typeArray = addGroupArray;
  152 + [weakSelf.tableView reloadData];
  153 + };
  154 +
  155 + return addAccountCell;
  156 + }
  157 + else {
  158 + return nil;
  159 + }
  160 +}
  161 +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
  162 + CNBPerAuthHeaderView *headerView = [[CNBPerAuthHeaderView alloc]init];
  163 + headerView.frame = CGRectMake(0, 0, KScreenWidth, 45);
  164 + headerView.sectionModel = self.sectionArray[section];
  165 + headerView.backgroundColor = [UIColor whiteColor];
  166 + __weak typeof(self) weakSelf = self;
  167 + headerView.deleteInstitutionsBlock = ^{
  168 + [weakSelf.sectionArray removeObjectAtIndex:section];
  169 + [weakSelf.tableView reloadData];
  170 + };
  171 + return headerView;
  172 +}
  173 +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
  174 + return 45;
  175 +}
  176 +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  177 + CNBAddSectionModel *sectionModel = self.sectionArray[indexPath.section];
  178 + CNBTypeModel *model = sectionModel.typeArray[indexPath.row];
  179 + if ([model.type isEqualToString:@"0"]) {
  180 + return 45;
  181 + }else if ([model.type isEqualToString:@"1"]) {
  182 + return 92;
  183 + }else if ([model.type isEqualToString:@"2"]){
  184 + return 52;
  185 + }else if ([model.type isEqualToString:@"3"]) {
  186 + return 92;
  187 + }else if ([model.type isEqualToString:@"4"]) {
  188 + return 52;
  189 + }else {
  190 + return 0.01;
  191 + }
  192 +}
  193 +#pragma mark - lazy
  194 +- (QMUIButton *)promptBtn {
  195 + if (!_promptBtn) {
  196 + _promptBtn = [[QMUIButton alloc]init];
  197 + _promptBtn.backgroundColor = CNLiveColorWithHexString(@"48A7F9");
  198 + [_promptBtn setTitle:@"请选择在网家家平台上与您相关的所有机构公司信息" forState:UIControlStateNormal];
  199 + [ _promptBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"xinxi" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  200 + _promptBtn.imagePosition = QMUIButtonImagePositionRight;
  201 + _promptBtn.spacingBetweenImageAndTitle = 13;
  202 + _promptBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  203 + [_promptBtn setTitleColor:CNLiveColorWithHexString(@"FFFFFF") forState:UIControlStateNormal];
  204 + _promptBtn.userInteractionEnabled = NO;
  205 + }
  206 + return _promptBtn;
  207 +}
  208 +- (UITableView *)tableView {
  209 + if (!_tableView) {
  210 + _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight + CNBHeaderShowHeight, KScreenWidth, KScreenHeight - kNavigationBarHeight - CNBHeaderShowHeight) style:UITableViewStyleGrouped];
  211 + _tableView.delegate = self;
  212 + _tableView.dataSource = self;
  213 + _tableView.backgroundColor = CNLiveColorWithHexString(@"F7F7F7");
  214 + _footerTBView = [[CNBPerAuthFooterTBView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 168)];
  215 + _footerTBView.backgroundColor = CNLiveColorWithHexString(@"F7F7F7");
  216 + __weak typeof(self) weakSelf = self;
  217 + _footerTBView.addInstitutionsBlock = ^{
  218 +// CNBAddSectionModel *model = [[CNBAddSectionModel alloc]init];
  219 +// model.isDelete = @"1";
  220 +// model.addSection = weakSelf.sectionArray.count;
  221 +// [weakSelf.sectionArray addObject:model];
  222 + [weakSelf addData:@"1" addSection:[NSString stringWithFormat:@"%ld",weakSelf.sectionArray.count]];
  223 + [weakSelf.tableView reloadData];
  224 + };
  225 + _tableView.tableFooterView = _footerTBView;
  226 + _tableView.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, 0.1)];
  227 + if (@available(iOS 11.0, *)) {
  228 + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
  229 +
  230 + } else {
  231 + self.automaticallyAdjustsScrollViewInsets = NO;
  232 + }
  233 + }
  234 + return _tableView;
  235 +}
  236 +//- (CNBPerAuthFooterTBView *)footerTBView {
  237 +// if (!_footerTBView) {
  238 +// _footerTBView = [[CNBPerAuthFooterTBView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 168)];
  239 +// _footerTBView.backgroundColor = CNLiveColorWithHexString(@"F7F7F7");
  240 +// }
  241 +// return _footerTBView;
  242 +//}
  243 +
  244 +@end
... ...
CNLiveBPersonalVerificationModule/Classes/Model/CNBIdentifierModel.h 0 → 100644
  1 +//
  2 +// CNBIdentifierModel.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/9.
  6 +//
  7 +
  8 +#import <Foundation/Foundation.h>
  9 +@class CNBTypeModel;
  10 +NS_ASSUME_NONNULL_BEGIN
  11 +//添加圈子等
  12 +@interface CNBTypeModel : NSObject
  13 +@property (nonatomic, copy) NSString *type; //区分是什么 0是所属机构 1 您的圈子 2 添加圈子 3 相关子账号 4 添加子账号
  14 +@property (nonatomic, copy) NSString *isDelete; //是否可以删除 0 不可删除 1 可删除
  15 +@property (nonatomic, assign) NSInteger AddSection; //组
  16 +@property (nonatomic, assign) NSInteger addRow;
  17 +@end
  18 +//添加机构
  19 +@interface CNBAddSectionModel : NSObject
  20 +@property (nonatomic, copy) NSString *isDelete; //是否可删除 00 不可删除 1 可删除
  21 +@property (nonatomic, assign) NSInteger addSection; //添加时所在组
  22 +@property (nonatomic, strong) NSMutableArray <CNBTypeModel *>*typeArray; //存放每种类型cell的数组
  23 +@end
  24 +
  25 +NS_ASSUME_NONNULL_END
... ...
CNLiveBPersonalVerificationModule/Classes/Model/CNBIdentifierModel.m 0 → 100644
  1 +//
  2 +// CNBIdentifierModel.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/9.
  6 +//
  7 +
  8 +#import "CNBIdentifierModel.h"
  9 +
  10 +@implementation CNBTypeModel
  11 +
  12 +@end
  13 +@implementation CNBAddSectionModel
  14 +
  15 +@end
... ...
CNLiveBPersonalVerificationModule/Classes/View/CNBPerAuthFooterTBView.h 0 → 100644
  1 +//
  2 +// CNBPerAuthFooterTBView.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/8.
  6 +//
  7 +
  8 +#import <UIKit/UIKit.h>
  9 +
  10 +NS_ASSUME_NONNULL_BEGIN
  11 +
  12 +@interface CNBPerAuthFooterTBView : UIView
  13 +@property (nonatomic, copy) void (^addInstitutionsBlock) (void);
  14 +@property (nonatomic, copy) void (^submitActionBlock)(void);
  15 +@end
  16 +
  17 +NS_ASSUME_NONNULL_END
... ...
CNLiveBPersonalVerificationModule/Classes/View/CNBPerAuthFooterTBView.m 0 → 100644
  1 +//
  2 +// CNBPerAuthFooterTBView.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/8.
  6 +//
  7 +
  8 +#import "CNBPerAuthFooterTBView.h"
  9 +#import <QMUIKit/QMUIKit.h>
  10 +#import <Masonry/Masonry.h>
  11 +#import "CNLivePerAuthGetImage.h"
  12 +#import "UIColor+CNLiveExtension.h"
  13 +@interface CNBPerAuthFooterTBView ()
  14 +@property (nonatomic, strong) UIView *containerView;
  15 +@property (nonatomic, strong) UILabel *descLabel;
  16 +@property (nonatomic, strong) QMUIButton *addBtn;
  17 +@property (nonatomic, strong) QMUIButton *submitBtn;
  18 +@end
  19 +
  20 +@implementation CNBPerAuthFooterTBView
  21 +
  22 +- (instancetype)initWithFrame:(CGRect)frame {
  23 + if (self = [super initWithFrame:frame]) {
  24 + [self configUI];
  25 + }
  26 + return self;
  27 +}
  28 +
  29 +#pragma mark - 配置UI
  30 +- (void)configUI {
  31 + [self addSubview:self.containerView];
  32 + [self.containerView addSubview:self.descLabel];
  33 + [self.containerView addSubview:self.addBtn];
  34 + [self addSubview:self.submitBtn];
  35 + [self addMasony];
  36 +}
  37 +- (void)addMasony {
  38 + __weak typeof(self) weakSelf = self;
  39 + [_containerView mas_makeConstraints:^(MASConstraintMaker *make) {
  40 + make.top.right.left.mas_equalTo(weakSelf);
  41 + make.height.mas_equalTo(58);
  42 + }];
  43 + [_addBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  44 + make.right.mas_equalTo(weakSelf.containerView.mas_right).offset(-15);
  45 + make.centerY.mas_equalTo(weakSelf.containerView.mas_centerY);
  46 + make.size.mas_equalTo(CGSizeMake(89, 28));
  47 + }];
  48 + [_descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  49 + make.right.mas_equalTo(weakSelf.addBtn.mas_left).offset(-11);
  50 + make.left.mas_equalTo(weakSelf.containerView).offset(30);
  51 + make.centerY.mas_equalTo(weakSelf.containerView.mas_centerY);
  52 + make.height.mas_equalTo(11);
  53 + }];
  54 + [_submitBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  55 + make.left.mas_equalTo(weakSelf.mas_left).offset(51);
  56 + make.right.mas_equalTo(weakSelf.mas_right).offset(-51);
  57 + make.top.mas_equalTo(weakSelf.containerView.mas_bottom).offset(25);
  58 + make.height.mas_equalTo(35);
  59 + }];
  60 +}
  61 +#pragma mark - Action
  62 +#pragma mark - 添加机构
  63 +- (void)addBtnAction {
  64 + if (self.addInstitutionsBlock) {
  65 + self.addInstitutionsBlock();
  66 + }
  67 +}
  68 +#pragma mark - 提交
  69 +- (void)submitBtnAction {
  70 + if (self.submitActionBlock) {
  71 + self.submitActionBlock();
  72 + }
  73 +}
  74 +#pragma mark - lazy
  75 +- (UIView *)containerView {
  76 + if (!_containerView) {
  77 + _containerView = [[UIView alloc]init];
  78 + _containerView.backgroundColor = [UIColor whiteColor];
  79 + }
  80 + return _containerView;
  81 +}
  82 +- (UILabel *)descLabel {
  83 + if (!_descLabel) {
  84 + _descLabel = [[UILabel alloc]init];
  85 + _descLabel.textColor = CNLiveColorWithHexString(@"999999");
  86 + _descLabel.font = [UIFont systemFontOfSize:11];
  87 + _descLabel.numberOfLines = 1;
  88 + _descLabel.textAlignment = NSTextAlignmentRight;
  89 + _descLabel.text = @"如您有多个机构,可点击添加";
  90 + }
  91 + return _descLabel;
  92 +}
  93 +- (QMUIButton *)addBtn {
  94 + if (!_addBtn) {
  95 + _addBtn = [[QMUIButton alloc]init];
  96 + [_addBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"add_jigou" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  97 + [_addBtn setTitle:@"添加机构" forState:UIControlStateNormal];
  98 + [_addBtn setTitleColor:CNLiveColorWithHexString(@"FFFFFF") forState:UIControlStateNormal];
  99 + _addBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  100 + _addBtn.imagePosition = QMUIButtonImagePositionLeft;
  101 + _addBtn.spacingBetweenImageAndTitle = 5;
  102 + _addBtn.backgroundColor = CNLiveColorWithHexString(@"48A7F9");
  103 + _addBtn.layer.cornerRadius = 5;
  104 + [_addBtn addTarget:self action:@selector(addBtnAction) forControlEvents:UIControlEventTouchUpInside];
  105 + }
  106 + return _addBtn;
  107 +}
  108 +
  109 +- (QMUIButton *)submitBtn {
  110 + if (!_submitBtn) {
  111 + _submitBtn = [[QMUIButton alloc]init];
  112 + [_submitBtn setTitle:@"提交" forState:UIControlStateNormal];
  113 + [_submitBtn setTitleColor: CNLiveColorWithHexString(@"FFFFFF") forState:UIControlStateNormal];
  114 + _submitBtn.backgroundColor = CNLiveColorWithHexString(@"4EABFD");
  115 + _submitBtn.layer.cornerRadius = 17.5;
  116 + [_submitBtn addTarget:self action:@selector(submitBtnAction) forControlEvents:UIControlEventTouchUpInside];
  117 + }
  118 + return _submitBtn;
  119 +}
  120 +@end
... ...
CNLiveBPersonalVerificationModule/Classes/View/CNBPerAuthHeaderView.h 0 → 100644
  1 +//
  2 +// CNBPerAuthHeaderView.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/8.
  6 +//
  7 +
  8 +#import <UIKit/UIKit.h>
  9 +@class CNBAddSectionModel;
  10 +NS_ASSUME_NONNULL_BEGIN
  11 +
  12 +@interface CNBPerAuthHeaderView : UIView
  13 +@property (nonatomic, strong) CNBAddSectionModel *sectionModel;
  14 +@property (nonatomic, copy) void (^deleteInstitutionsBlock) (void);
  15 +
  16 +@end
  17 +
  18 +NS_ASSUME_NONNULL_END
... ...
CNLiveBPersonalVerificationModule/Classes/View/CNBPerAuthHeaderView.m 0 → 100644
  1 +//
  2 +// CNBPerAuthHeaderView.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/8.
  6 +//
  7 +
  8 +#import "CNBPerAuthHeaderView.h"
  9 +#import <QMUIKit/QMUIKit.h>
  10 +#import "CNLivePerAuthGetImage.h"
  11 +#import "UIColor+CNLiveExtension.h"
  12 +#import <Masonry/Masonry.h>
  13 +#import "CNBIdentifierModel.h"
  14 +@interface CNBPerAuthHeaderView ()
  15 +@property (nonatomic, strong) QMUIButton *showBtn;
  16 +@property (nonatomic, strong) QMUIButton *deleteBtn;
  17 +@end
  18 +@implementation CNBPerAuthHeaderView
  19 +
  20 +#pragma mark - init
  21 +- (instancetype)initWithFrame:(CGRect)frame {
  22 + self = [super initWithFrame:frame];
  23 + if (self) {
  24 + [self configUI];
  25 + }
  26 + return self;
  27 +}
  28 +#pragma mark - 配置UI
  29 +- (void)configUI {
  30 + [self addSubview:self.showBtn];
  31 + [self addSubview:self.deleteBtn];
  32 + __weak typeof(self) weakSelf = self;
  33 + [_showBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  34 + make.left.mas_equalTo(weakSelf.mas_left).offset(10);
  35 + make.top.mas_equalTo(weakSelf.mas_top).offset(15);
  36 + make.bottom.mas_equalTo(weakSelf.mas_bottom).offset(-15);
  37 + make.right.mas_equalTo(weakSelf.mas_right).offset(-40);
  38 + }];
  39 + [_deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  40 + make.right.mas_equalTo(weakSelf.mas_right).offset(-15);
  41 + make.size.mas_equalTo(CGSizeMake(16.5, 18));
  42 + make.centerY.mas_equalTo(weakSelf.mas_centerY);
  43 + }];
  44 +}
  45 +
  46 +#pragma mark - getterAndSetter
  47 +- (void)setSectionModel:(CNBAddSectionModel *)sectionModel {
  48 + _sectionModel = sectionModel;
  49 + if ([sectionModel.isDelete isEqualToString:@"1"]) {
  50 + self.deleteBtn.hidden = NO;
  51 + }else {
  52 + self.deleteBtn.hidden = YES;
  53 + }
  54 +}
  55 +#pragma mark - Action
  56 +- (void)deleteBtnAction {
  57 + if (self.deleteInstitutionsBlock) {
  58 + self.deleteInstitutionsBlock();
  59 + }
  60 +}
  61 +
  62 +#pragma mark -lazy
  63 +
  64 +- (QMUIButton *)showBtn {
  65 + if (!_showBtn) {
  66 + _showBtn = [[QMUIButton alloc]init];
  67 + [_showBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"xzjg" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  68 + [_showBtn setTitle:@"选择您在网家家平台上的所属机构" forState:UIControlStateNormal];
  69 + [_showBtn setTitleColor:CNLiveColorWithHexString(@"333333") forState:UIControlStateNormal];
  70 + _showBtn.spacingBetweenImageAndTitle = 5;
  71 + _showBtn.imagePosition = QMUIButtonImagePositionLeft;
  72 + _showBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  73 + _showBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  74 + _showBtn.userInteractionEnabled = NO;
  75 + }
  76 + return _showBtn;
  77 +}
  78 +- (QMUIButton *)deleteBtn {
  79 + if (!_deleteBtn) {
  80 + _deleteBtn = [[QMUIButton alloc]init];
  81 + [_deleteBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"delete" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  82 + [_deleteBtn addTarget:self action:@selector(deleteBtnAction) forControlEvents:UIControlEventTouchUpInside];
  83 + _deleteBtn.hidden = YES;
  84 + }
  85 + return _deleteBtn;
  86 +}
  87 +@end
... ...
CNLiveBPersonalVerificationModule/Classes/View/CNBPersonalVerificationCell.h 0 → 100644
  1 +//
  2 +// CNBPersonalVerificationCell.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/6.
  6 +//
  7 +
  8 +#import <UIKit/UIKit.h>
  9 +@class CNBTypeModel;
  10 +NS_ASSUME_NONNULL_BEGIN
  11 +//所属机构
  12 +@interface CNBPersonalVerificationCell : UITableViewCell
  13 +
  14 +@end
  15 +//您的圈子和圈子群组
  16 +@interface CNBCircleGroupCell : UITableViewCell
  17 +@property (nonatomic, strong) CNBTypeModel *typeModel;
  18 +@property (nonatomic, copy) void (^circleDeleteBlock) (void);
  19 +@end
  20 +//添加圈子
  21 +@interface CNBCircleAddGroupCell : UITableViewCell
  22 +@property (nonatomic, copy) void (^addCircleGroupBlock)(void);
  23 +
  24 +@end
  25 +//相关账号
  26 +@interface CNBAccountGroupCell : UITableViewCell
  27 +@property (nonatomic, strong) CNBTypeModel *accountTypeModel;
  28 +@property (nonatomic, copy) void (^accountDeleteBlock) (void);
  29 +@end
  30 +//添加子账号
  31 +
  32 +@interface CNBAddAccountGroupCell : UITableViewCell
  33 +@property (nonatomic, copy) void (^addAccountGroupBlock) (void);
  34 +
  35 +@end
  36 +NS_ASSUME_NONNULL_END
... ...
CNLiveBPersonalVerificationModule/Classes/View/CNBPersonalVerificationCell.m 0 → 100644
  1 +//
  2 +// CNBPersonalVerificationCell.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/6.
  6 +//
  7 +
  8 +#import "CNBPersonalVerificationCell.h"
  9 +#import <Masonry/Masonry.h>
  10 +#import "CNLivePerAuthGetImage.h"
  11 +#import "UIColor+CNLiveExtension.h"
  12 +#import "CNLiveBaseKit.h"
  13 +#import <QMUIKit/QMUIKit.h>
  14 +#import "CNBIdentifierModel.h"
  15 +@interface CNBPersonalVerificationCell ()<UITextFieldDelegate>
  16 +@property (nonatomic, strong) UIImageView *logoImageV; //是不是必须的标识
  17 +@property (nonatomic, strong) UILabel *titleLabel; //标题
  18 +//@property (nonatomic, strong) UIView *containerView;
  19 +@property (nonatomic, strong) UITextField *textField;
  20 +@property (nonatomic, strong) UIButton *rightBtn;
  21 +@end
  22 +#pragma mark - 所属机构
  23 +@implementation CNBPersonalVerificationCell
  24 +
  25 +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  26 + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  27 + if (self) {
  28 + self.selectionStyle = UITableViewCellSelectionStyleNone;
  29 + [self configUI];
  30 + }
  31 + return self;
  32 +}
  33 +#pragma mark - 配置UI
  34 +- (void)configUI {
  35 + [self.contentView addSubview:self.logoImageV];
  36 + [self.contentView addSubview:self.titleLabel];
  37 + [self.contentView addSubview:self.textField];
  38 + [self addMasony];
  39 +}
  40 +#pragma mark - 添加约束
  41 +- (void)addMasony {
  42 + __weak typeof(self) weakSelf = self;
  43 + [_logoImageV mas_makeConstraints:^(MASConstraintMaker *make) {
  44 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset(10);
  45 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  46 + make.size.mas_equalTo(CGSizeMake(7, 8));
  47 + }];
  48 + [_titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  49 + make.left.mas_equalTo(weakSelf.logoImageV.mas_right).offset(4.5);
  50 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  51 + make.size.mas_equalTo(CGSizeMake(100, 12));
  52 + }];
  53 + [_textField mas_makeConstraints:^(MASConstraintMaker *make) {
  54 + make.left.mas_equalTo(weakSelf.titleLabel.mas_right).offset(8);
  55 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  56 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-16);
  57 + make.height.mas_equalTo(28);
  58 + }];
  59 +}
  60 +#pragma mark - Action
  61 +- (void)rightBtnAction {
  62 +
  63 +}
  64 +#pragma mark -lazy
  65 +- (UIImageView *)logoImageV {
  66 + if (!_logoImageV) {
  67 + _logoImageV = [[UIImageView alloc]init];
  68 + _logoImageV.image = [CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"bitian" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]];
  69 + _logoImageV.contentMode = UIViewContentModeScaleAspectFit;
  70 + }
  71 + return _logoImageV;
  72 +}
  73 +- (UILabel *)titleLabel {
  74 + if (!_titleLabel) {
  75 + _titleLabel = [[UILabel alloc]init];
  76 + _titleLabel.textColor = CNLiveColorWithHexString(@"333333");
  77 + _titleLabel.font = [UIFont systemFontOfSize:12];
  78 + _titleLabel.textAlignment = NSTextAlignmentLeft;
  79 + _titleLabel.numberOfLines = 1;
  80 + _titleLabel.text = @"所属机构 (主账号)";
  81 + }
  82 + return _titleLabel;
  83 +}
  84 +- (UITextField *)textField {
  85 + if (!_textField) {
  86 + _textField = [[UITextField alloc]init];
  87 + _textField.textColor = CNLiveColorWithHexString(@"333333");
  88 + _textField.font = [UIFont systemFontOfSize:12];
  89 + _textField.placeholder = @"请选择您所属的机构";
  90 + _textField.layer.borderWidth = 0.5;
  91 + _textField.layer.borderColor = CNLiveColorWithHexString(@"C1C1C1").CGColor;
  92 + _textField.layer.cornerRadius = 5;
  93 + _textField.delegate = self;
  94 + UIButton *rightBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 6.5, 12)];
  95 + [rightBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"xuanze" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  96 + [rightBtn addTarget:self action:@selector(rightBtnAction) forControlEvents:UIControlEventTouchUpInside];
  97 + _textField.rightView = rightBtn;
  98 + _textField.rightViewMode = UITextFieldViewModeAlways;
  99 + }
  100 + return _textField;
  101 +}
  102 +
  103 +@end
  104 +#pragma mark - 圈子和圈子群组
  105 +@interface CNBCircleGroupCell ()
  106 +@property (nonatomic, strong) UILabel *circleLabel; //圈子
  107 +@property (nonatomic, strong) UITextField *circleTextField;//圈子TF
  108 +@property (nonatomic, strong) UILabel *groupLabel; //群组
  109 +@property (nonatomic, strong) UITextField *groupTextField; //群组TF
  110 +@property (nonatomic, strong) UIButton *deleteBtn; //删除
  111 +@end
  112 +
  113 +@implementation CNBCircleGroupCell
  114 +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  115 + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  116 + if (self) {
  117 + self.selectionStyle = UITableViewCellSelectionStyleNone;
  118 + [self configUI];
  119 + }
  120 + return self;
  121 +}
  122 +#pragma mark - 配置UI
  123 +- (void)configUI {
  124 + [self.contentView addSubview:self.circleLabel];
  125 + [self.contentView addSubview:self.circleTextField];
  126 + [self.contentView addSubview:self.groupLabel];
  127 + [self.contentView addSubview:self.groupTextField];
  128 + [self addMasony];
  129 +}
  130 +- (void)addMasony {
  131 + __weak typeof(self) weakSelf = self;
  132 + [_circleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  133 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset (21.5);
  134 + make.top.mas_equalTo(weakSelf.contentView.mas_top).offset(20);
  135 + make.size.mas_equalTo(CGSizeMake(100, 12));
  136 + }];
  137 + [_circleTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  138 + make.left.mas_equalTo(weakSelf.circleLabel.mas_right).offset(8);
  139 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-16);
  140 + make.top.mas_equalTo(weakSelf.contentView.mas_top).offset(12);
  141 + make.height.mas_equalTo(28);
  142 + }];
  143 + [_groupLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  144 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset (21.5);
  145 + make.bottom.mas_equalTo(weakSelf.contentView.mas_bottom).offset(-20);
  146 + make.size.mas_equalTo(CGSizeMake(100, 12));
  147 + }];
  148 + [_groupTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  149 + make.left.mas_equalTo(weakSelf.groupLabel.mas_right).offset(8);
  150 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-16);
  151 + make.bottom.mas_equalTo(weakSelf.contentView.mas_bottom).offset(-12);
  152 + make.height.mas_equalTo(28);
  153 + }];
  154 +}
  155 +#pragma mark - 显示删除按钮
  156 +- (void)showDeleteBtn {
  157 + __weak typeof(self) weakSelf = self;
  158 + [self.contentView addSubview:self.deleteBtn];
  159 + self.deleteBtn.hidden = NO;
  160 + [_deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  161 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-15);
  162 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  163 + make.size.mas_equalTo(CGSizeMake(20, 20));
  164 + }];
  165 + [_circleTextField mas_updateConstraints:^(MASConstraintMaker *make) {
  166 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-43);
  167 + }];
  168 + [_groupTextField mas_updateConstraints:^(MASConstraintMaker *make) {
  169 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-43);
  170 + }];
  171 +}
  172 +#pragma mark - getterAndSetter
  173 +- (void)setTypeModel:(CNBTypeModel *)typeModel{
  174 + _typeModel = typeModel;
  175 + if ([typeModel.type isEqualToString:@"1"]) {
  176 + if ([typeModel.isDelete isEqualToString:@"1"]) {
  177 + [self showDeleteBtn];
  178 + }else {
  179 + [self.deleteBtn removeFromSuperview];
  180 + self.deleteBtn.hidden = YES;
  181 + }
  182 + }
  183 +
  184 +}
  185 +#pragma mark - Action
  186 +- (void)deleteBtnAction {
  187 + if (self.circleDeleteBlock) {
  188 + self.circleDeleteBlock();
  189 + }
  190 +}
  191 +
  192 +#pragma mark - lazy
  193 +- (UILabel *)circleLabel {
  194 + if (!_circleLabel) {
  195 + _circleLabel = [[UILabel alloc]init];
  196 + _circleLabel.textColor = CNLiveColorWithHexString(@"333333");
  197 + _circleLabel.font = [UIFont systemFontOfSize:12];
  198 + _circleLabel.textAlignment = NSTextAlignmentLeft;
  199 + _circleLabel.numberOfLines = 1;
  200 + _circleLabel.text = @"您的圈子 (子账号)";
  201 + }
  202 + return _circleLabel;
  203 +}
  204 +- (UITextField *)circleTextField {
  205 + if (!_circleTextField) {
  206 + _circleTextField = [[UITextField alloc]init];
  207 + _circleTextField.textColor = CNLiveColorWithHexString(@"333333");
  208 + _circleTextField.placeholder = @"请选择您的圈子";
  209 + _circleTextField.layer.borderWidth = 0.5;
  210 + _circleTextField.layer.borderColor = CNLiveColorWithHexString(@"C1C1C1").CGColor;
  211 + _circleTextField.font = [UIFont systemFontOfSize:12];
  212 + _circleTextField.layer.cornerRadius = 5;
  213 + }
  214 + return _circleTextField;
  215 +}
  216 +- (UILabel *)groupLabel {
  217 + if (!_groupLabel) {
  218 + _groupLabel = [[UILabel alloc]init];
  219 + _groupLabel.textColor = CNLiveColorWithHexString(@"333333");
  220 + _groupLabel.font = [UIFont systemFontOfSize:12];
  221 + _groupLabel.textAlignment = NSTextAlignmentLeft;
  222 + _groupLabel.numberOfLines = 1;
  223 + _groupLabel.text = @"圈子群组 (子群组)";
  224 + }
  225 + return _groupLabel;
  226 +}
  227 +- (UITextField *)groupTextField {
  228 + if (!_groupTextField) {
  229 + _groupTextField = [[UITextField alloc]init];
  230 + _groupTextField .textColor = CNLiveColorWithHexString(@"333333");
  231 + _groupTextField .placeholder = @"请选择圈子群组";
  232 + _groupTextField .layer.borderWidth = 0.5;
  233 + _groupTextField .layer.borderColor = CNLiveColorWithHexString(@"C1C1C1").CGColor;
  234 + _groupTextField .font = [UIFont systemFontOfSize:12];
  235 + _groupTextField .layer.cornerRadius = 5;
  236 + }
  237 + return _groupTextField;
  238 +}
  239 +- (UIButton *)deleteBtn {
  240 + if (!_deleteBtn) {
  241 + _deleteBtn = [[UIButton alloc]init];
  242 + [_deleteBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"delete-icon" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  243 + [_deleteBtn addTarget:self action:@selector(deleteBtnAction) forControlEvents:UIControlEventTouchUpInside];
  244 + }
  245 + return _deleteBtn;
  246 +}
  247 +@end
  248 +#pragma mark - 添加圈子
  249 +@interface CNBCircleAddGroupCell ()
  250 +@property (nonatomic, strong) UILabel *descLabel;
  251 +@property (nonatomic, strong) QMUIButton *addBtn; //添加圈子
  252 +@end
  253 +
  254 +@implementation CNBCircleAddGroupCell
  255 +
  256 +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  257 + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  258 + if (self) {
  259 + self.selectionStyle = UITableViewCellSelectionStyleNone;
  260 + [self configUI];
  261 + }
  262 + return self;
  263 +}
  264 +- (void)configUI {
  265 + [self.contentView addSubview:self.addBtn];
  266 + [self.contentView addSubview:self.descLabel];
  267 + __weak typeof(self) weakSelf = self;
  268 + [_addBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  269 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-15);
  270 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  271 + make.size.mas_equalTo(CGSizeMake(90, 28));
  272 + }];
  273 +
  274 + [_descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  275 + make.right.mas_equalTo(weakSelf.addBtn.mas_left).offset(-11);
  276 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset(20);
  277 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  278 + make.height.mas_equalTo(12);
  279 + }];
  280 +}
  281 +#pragma mark -Action
  282 +- (void)addBtnAction {
  283 + if (self.addCircleGroupBlock) {
  284 + self.addCircleGroupBlock();
  285 + }
  286 +}
  287 +
  288 +#pragma mark -lazy
  289 +- (UILabel *)descLabel {
  290 + if (!_descLabel) {
  291 + _descLabel = [[UILabel alloc]init];
  292 + _descLabel.textColor = CNLiveColorWithHexString(@"999999");
  293 + _descLabel.font = [UIFont systemFontOfSize:11];
  294 + _descLabel.numberOfLines = 1;
  295 + _descLabel.textAlignment = NSTextAlignmentRight;
  296 + _descLabel.text = @"如您有多个圈子,可点击添加";
  297 + }
  298 + return _descLabel;
  299 +}
  300 +- (QMUIButton *)addBtn {
  301 + if (!_addBtn) {
  302 + _addBtn = [[QMUIButton alloc]init];
  303 + [_addBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"add" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  304 + [_addBtn setTitle:@"添加圈子" forState:UIControlStateNormal];
  305 + _addBtn.titleLabel.textColor = CNLiveColorWithHexString(@"48A7F9");
  306 + _addBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  307 + _addBtn.imagePosition = QMUIButtonImagePositionLeft;
  308 + _addBtn.spacingBetweenImageAndTitle = 5;
  309 + _addBtn.layer.borderColor = CNLiveColorWithHexString(@"48A7F9").CGColor;
  310 + _addBtn.layer.borderWidth = 1;
  311 + _addBtn.layer.cornerRadius = 5;
  312 + [_addBtn addTarget:self action:@selector(addBtnAction) forControlEvents:UIControlEventTouchUpInside];
  313 + }
  314 + return _addBtn;
  315 +}
  316 +@end
  317 +#pragma mark - 相关账号和相关群组
  318 +@interface CNBAccountGroupCell ()
  319 +@property (nonatomic, strong) UILabel *accountLabel; //圈子
  320 +@property (nonatomic, strong) UITextField *accountTextField;//圈子TF
  321 +@property (nonatomic, strong) UILabel *relateGroupLabel; //群组
  322 +@property (nonatomic, strong) UITextField *relateGroupTextField; //群组TF
  323 +@property (nonatomic, strong) UIButton *deleteBtn; //删除
  324 +@end
  325 +
  326 +@implementation CNBAccountGroupCell
  327 +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  328 + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  329 + if (self) {
  330 + self.selectionStyle = UITableViewCellSelectionStyleNone;
  331 + [self configUI];
  332 + }
  333 + return self;
  334 +}
  335 +
  336 +#pragma mark - 配置UI
  337 +- (void)configUI {
  338 + [self.contentView addSubview:self.accountLabel];
  339 + [self.contentView addSubview:self.accountTextField];
  340 + [self.contentView addSubview:self.relateGroupLabel];
  341 + [self.contentView addSubview:self.relateGroupTextField];
  342 + [self addMasony];
  343 +}
  344 +- (void)addMasony {
  345 + __weak typeof(self) weakSelf = self;
  346 + [_accountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  347 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset (21.5);
  348 + make.top.mas_equalTo(weakSelf.contentView.mas_top).offset(20);
  349 + make.size.mas_equalTo(CGSizeMake(100, 12));
  350 + }];
  351 + [_accountTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  352 + make.left.mas_equalTo(weakSelf.accountLabel.mas_right).offset(8);
  353 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-16);
  354 + make.top.mas_equalTo(weakSelf.contentView.mas_top).offset(12);
  355 + make.height.mas_equalTo(28);
  356 + }];
  357 + [_relateGroupLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  358 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset (21.5);
  359 + make.bottom.mas_equalTo(weakSelf.contentView.mas_bottom).offset(-20);
  360 + make.size.mas_equalTo(CGSizeMake(100, 12));
  361 + }];
  362 + [_relateGroupTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  363 + make.left.mas_equalTo(weakSelf.relateGroupLabel.mas_right).offset(8);
  364 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-16);
  365 + make.bottom.mas_equalTo(weakSelf.contentView.mas_bottom).offset(-12);
  366 + make.height.mas_equalTo(28);
  367 + }];
  368 +}
  369 +#pragma mark - 显示删除按钮
  370 +- (void)showDeleteBtn {
  371 + __weak typeof(self) weakSelf = self;
  372 + [self.contentView addSubview:self.deleteBtn];
  373 + self.deleteBtn.hidden = NO;
  374 + [_deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  375 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-15);
  376 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  377 + make.size.mas_equalTo(CGSizeMake(20, 20));
  378 + }];
  379 + [_accountTextField mas_updateConstraints:^(MASConstraintMaker *make) {
  380 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-43);
  381 + }];
  382 + [_relateGroupTextField mas_updateConstraints:^(MASConstraintMaker *make) {
  383 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-43);
  384 + }];
  385 +}
  386 +#pragma mark - getterAndSetter
  387 +- (void)setAccountTypeModel:(CNBTypeModel *)accountTypeModel {
  388 + _accountTypeModel = accountTypeModel;
  389 + if ([accountTypeModel.type isEqualToString:@"3"]) {
  390 + if ([accountTypeModel.isDelete isEqualToString:@"1"]) {
  391 + [self showDeleteBtn];
  392 + }else{
  393 + [self.deleteBtn removeFromSuperview];
  394 + [self.deleteBtn setHidden:YES];
  395 + }
  396 + }
  397 +}
  398 +#pragma mark - Action
  399 +- (void)deleteBtnAction {
  400 + if (self.accountDeleteBlock) {
  401 + self.accountDeleteBlock();
  402 + }
  403 +}
  404 +#pragma mark -lazy
  405 +- (UILabel *)accountLabel {
  406 + if (!_accountLabel) {
  407 + _accountLabel = [[UILabel alloc]init];
  408 + _accountLabel.textColor = CNLiveColorWithHexString(@"333333");
  409 + _accountLabel.font = [UIFont systemFontOfSize:12];
  410 + _accountLabel.textAlignment = NSTextAlignmentLeft;
  411 + _accountLabel.numberOfLines = 1;
  412 + _accountLabel.text = @"相关账号 (子账号)";
  413 + }
  414 + return _accountLabel;
  415 +}
  416 +- (UITextField *)accountTextField {
  417 + if (!_accountTextField) {
  418 + _accountTextField= [[UITextField alloc]init];
  419 + _accountTextField.textColor = CNLiveColorWithHexString(@"333333");
  420 + _accountTextField.placeholder = @"请选择机构子账号";
  421 + _accountTextField.layer.borderWidth = 0.5;
  422 + _accountTextField.layer.borderColor = CNLiveColorWithHexString(@"C1C1C1").CGColor;
  423 + _accountTextField.font = [UIFont systemFontOfSize:12];
  424 + _accountTextField.layer.cornerRadius = 5;
  425 + }
  426 + return _accountTextField;
  427 +}
  428 +- (UILabel *)relateGroupLabel {
  429 + if (!_relateGroupLabel) {
  430 + _relateGroupLabel = [[UILabel alloc]init];
  431 + _relateGroupLabel.textColor = CNLiveColorWithHexString(@"333333");
  432 + _relateGroupLabel.font = [UIFont systemFontOfSize:12];
  433 + _relateGroupLabel.textAlignment = NSTextAlignmentLeft;
  434 + _relateGroupLabel.numberOfLines = 1;
  435 + _relateGroupLabel.text = @"相关群组 (子群组)";
  436 + }
  437 + return _relateGroupLabel;
  438 +}
  439 +- (UITextField *)relateGroupTextField {
  440 + if (!_relateGroupTextField) {
  441 + _relateGroupTextField = [[UITextField alloc]init];
  442 + _relateGroupTextField.textColor = CNLiveColorWithHexString(@"333333");
  443 + _relateGroupTextField.placeholder = @"请选择圈子账号群组";
  444 + _relateGroupTextField.layer.borderWidth = 0.5;
  445 + _relateGroupTextField.layer.borderColor = CNLiveColorWithHexString(@"C1C1C1").CGColor;
  446 + _relateGroupTextField.font = [UIFont systemFontOfSize:12];
  447 + _relateGroupTextField.layer.cornerRadius = 5;
  448 + }
  449 + return _relateGroupTextField;
  450 +}
  451 +- (UIButton *)deleteBtn {
  452 + if (!_deleteBtn) {
  453 + _deleteBtn = [[UIButton alloc]init];
  454 + [_deleteBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"delete-icon" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  455 + [_deleteBtn addTarget:self action:@selector(deleteBtnAction) forControlEvents:UIControlEventTouchUpInside];
  456 + }
  457 + return _deleteBtn;
  458 +}
  459 +@end
  460 +
  461 +#pragma mark - 添加子账号
  462 +@interface CNBAddAccountGroupCell ()
  463 +@property (nonatomic, strong) UILabel *descLabel;
  464 +@property (nonatomic, strong) QMUIButton *addBtn; //添加子账号
  465 +@end
  466 +
  467 +
  468 +@implementation CNBAddAccountGroupCell
  469 +
  470 +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  471 + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  472 + if (self) {
  473 + self.selectionStyle = UITableViewCellSelectionStyleNone;
  474 + [self configUI];
  475 + }
  476 + return self;
  477 +}
  478 +- (void)configUI {
  479 + [self.contentView addSubview:self.addBtn];
  480 + [self.contentView addSubview:self.descLabel];
  481 + __weak typeof(self) weakSelf = self;
  482 + [_addBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  483 + make.right.mas_equalTo(weakSelf.contentView.mas_right).offset(-15);
  484 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  485 + make.size.mas_equalTo(CGSizeMake(103, 28));
  486 + }];
  487 +
  488 + [_descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  489 + make.right.mas_equalTo(weakSelf.addBtn.mas_left).offset(-11);
  490 + make.left.mas_equalTo(weakSelf.contentView.mas_left).offset(20);
  491 + make.centerY.mas_equalTo(weakSelf.contentView.mas_centerY);
  492 + make.height.mas_equalTo(12);
  493 + }];
  494 +}
  495 +#pragma mark -Action
  496 +- (void)addBtnAction {
  497 + if (self.addAccountGroupBlock) {
  498 + self.addAccountGroupBlock();
  499 + }
  500 +}
  501 +
  502 +#pragma mark -lazy
  503 +- (UILabel *)descLabel {
  504 + if (!_descLabel) {
  505 + _descLabel = [[UILabel alloc]init];
  506 + _descLabel.textColor = CNLiveColorWithHexString(@"999999");
  507 + _descLabel.font = [UIFont systemFontOfSize:11];
  508 + _descLabel.numberOfLines = 1;
  509 + _descLabel.textAlignment = NSTextAlignmentRight;
  510 + _descLabel.text = @"如您有多个子账号,可点击添加";
  511 + }
  512 + return _descLabel;
  513 +}
  514 +- (QMUIButton *)addBtn {
  515 + if (!_addBtn) {
  516 + _addBtn = [[QMUIButton alloc]init];
  517 + [_addBtn setImage:[CNLivePerAuthGetImage cnLivePerAuth_getImageName:@"add" bundle:@"CNLiveBPersonalVerificationModule.bundle/CNLiveBPersonalVerificationModule" targetClass:[self class]] forState:UIControlStateNormal];
  518 + [_addBtn setTitle:@"添加子账号" forState:UIControlStateNormal];
  519 + _addBtn.titleLabel.textColor = CNLiveColorWithHexString(@"48A7F9");
  520 + _addBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  521 + _addBtn.imagePosition = QMUIButtonImagePositionLeft;
  522 + _addBtn.spacingBetweenImageAndTitle = 5;
  523 + _addBtn.layer.borderColor = CNLiveColorWithHexString(@"48A7F9").CGColor;
  524 + _addBtn.layer.borderWidth = 1;
  525 + _addBtn.layer.cornerRadius = 5;
  526 + [_addBtn addTarget:self action:@selector(addBtnAction) forControlEvents:UIControlEventTouchUpInside];
  527 + }
  528 + return _addBtn;
  529 +}
  530 +
  531 +@end
... ...
CNLiveBPersonalVerificationModule/Classes/ViewModel/CNLivePerAuthGetImage.h 0 → 100644
  1 +//
  2 +// CNLivePerAuthGetImage.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/6.
  6 +//
  7 +
  8 +#import <Foundation/Foundation.h>
  9 +
  10 +NS_ASSUME_NONNULL_BEGIN
  11 +
  12 +@interface CNLivePerAuthGetImage : NSObject
  13 +
  14 +/// 组件内获取图片
  15 +/// @param imageName 图片名字
  16 +/// @param bundlePath 图片所在bundle
  17 +/// @param targetClass 与bundle在同一级别的class
  18 ++ (UIImage *)cnLivePerAuth_getImageName:(NSString *)imageName bundle:(NSString *)bundlePath targetClass:(Class)targetClass;
  19 +@end
  20 +
  21 +NS_ASSUME_NONNULL_END
... ...
CNLiveBPersonalVerificationModule/Classes/ViewModel/CNLivePerAuthGetImage.m 0 → 100644
  1 +//
  2 +// CNLivePerAuthGetImage.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by 殷巧娟 on 2020/4/6.
  6 +//
  7 +
  8 +#import "CNLivePerAuthGetImage.h"
  9 +
  10 +@implementation CNLivePerAuthGetImage
  11 +/**
  12 + * 创建图片
  13 + *
  14 + * @param imageName 图片名字
  15 + * @param bundlePath 图片所在的bundle名字
  16 + * @param targetClass 类和bundle的同级目录
  17 + * @return 返回UIImage
  18 + */
  19 ++ (UIImage *)cnLivePerAuth_getImageName:(NSString *)imageName bundle:(NSString *)bundlePath targetClass:(Class)targetClass{
  20 +
  21 + NSInteger scale = [[UIScreen mainScreen]scale];
  22 + NSBundle *bundle = [NSBundle bundleForClass:targetClass];
  23 + NSURL *url = [bundle URLForResource:bundlePath withExtension:@"bundle"];
  24 +
  25 + if (!url) {
  26 + return [UIImage new];
  27 + }
  28 + NSBundle *targetBundle = [NSBundle bundleWithURL:url];
  29 + if (!targetBundle) {
  30 + return [UIImage new];
  31 + }
  32 + NSString *imgName = [NSString stringWithFormat:@"%@@%zdx.png",imageName,scale];
  33 + UIImage *image = [UIImage imageNamed:imgName inBundle:targetBundle compatibleWithTraitCollection:nil];
  34 + if (image) {
  35 + return image;
  36 + }else {
  37 + if ([UIImage imageNamed:imgName inBundle:[NSBundle mainBundle] compatibleWithTraitCollection:nil]) {
  38 + return [UIImage imageNamed:imgName inBundle:[NSBundle mainBundle] compatibleWithTraitCollection:nil];
  39 + }else{
  40 + return [UIImage new];
  41 + }
  42 + }
  43 +
  44 +}
  45 +@end
... ...
Example/CNLiveBPersonalVerificationModule.xcodeproj/project.pbxproj 0 → 100644
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 46;
  7 + objects = {
  8 +
  9 +/* Begin PBXBuildFile section */
  10 + 4E6D90B75C078198775B2788 /* Pods_CNLiveBPersonalVerificationModule_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7817A8D29BB68F50E5117819 /* Pods_CNLiveBPersonalVerificationModule_Tests.framework */; };
  11 + 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
  12 + 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
  13 + 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
  14 + 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; };
  15 + 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; };
  16 + 6003F59E195388D20070C39A /* CNLIVEAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* CNLIVEAppDelegate.m */; };
  17 + 6003F5A7195388D20070C39A /* CNLIVEViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* CNLIVEViewController.m */; };
  18 + 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; };
  19 + 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; };
  20 + 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
  21 + 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
  22 + 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; };
  23 + 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; };
  24 + 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; };
  25 + 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
  26 + B9D618F281EA888D94759421 /* Pods_CNLiveBPersonalVerificationModule_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B6B758677C7BEA3A31C708A /* Pods_CNLiveBPersonalVerificationModule_Example.framework */; };
  27 +/* End PBXBuildFile section */
  28 +
  29 +/* Begin PBXContainerItemProxy section */
  30 + 6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = {
  31 + isa = PBXContainerItemProxy;
  32 + containerPortal = 6003F582195388D10070C39A /* Project object */;
  33 + proxyType = 1;
  34 + remoteGlobalIDString = 6003F589195388D20070C39A;
  35 + remoteInfo = CNLiveBPersonalVerificationModule;
  36 + };
  37 +/* End PBXContainerItemProxy section */
  38 +
  39 +/* Begin PBXFileReference section */
  40 + 1B6B758677C7BEA3A31C708A /* Pods_CNLiveBPersonalVerificationModule_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLiveBPersonalVerificationModule_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  41 + 27702AE45A435A3D3F6D7F80 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
  42 + 2EE018FA9C0FF28273EA7BB2 /* Pods-CNLiveBPersonalVerificationModule_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveBPersonalVerificationModule_Example.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveBPersonalVerificationModule_Example/Pods-CNLiveBPersonalVerificationModule_Example.debug.xcconfig"; sourceTree = "<group>"; };
  43 + 5116195DD3BA1DE9570EE346 /* Pods-CNLiveBPersonalVerificationModule_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveBPersonalVerificationModule_Tests.release.xcconfig"; path = "Target Support Files/Pods-CNLiveBPersonalVerificationModule_Tests/Pods-CNLiveBPersonalVerificationModule_Tests.release.xcconfig"; sourceTree = "<group>"; };
  44 + 6003F58A195388D20070C39A /* CNLiveBPersonalVerificationModule_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CNLiveBPersonalVerificationModule_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
  45 + 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
  46 + 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
  47 + 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
  48 + 6003F595195388D20070C39A /* CNLiveBPersonalVerificationModule-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CNLiveBPersonalVerificationModule-Info.plist"; sourceTree = "<group>"; };
  49 + 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
  50 + 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
  51 + 6003F59B195388D20070C39A /* CNLiveBPersonalVerificationModule-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CNLiveBPersonalVerificationModule-Prefix.pch"; sourceTree = "<group>"; };
  52 + 6003F59C195388D20070C39A /* CNLIVEAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLIVEAppDelegate.h; sourceTree = "<group>"; };
  53 + 6003F59D195388D20070C39A /* CNLIVEAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLIVEAppDelegate.m; sourceTree = "<group>"; };
  54 + 6003F5A5195388D20070C39A /* CNLIVEViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLIVEViewController.h; sourceTree = "<group>"; };
  55 + 6003F5A6195388D20070C39A /* CNLIVEViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLIVEViewController.m; sourceTree = "<group>"; };
  56 + 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
  57 + 6003F5AE195388D20070C39A /* CNLiveBPersonalVerificationModule_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CNLiveBPersonalVerificationModule_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  58 + 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
  59 + 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = "<group>"; };
  60 + 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
  61 + 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = "<group>"; };
  62 + 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; };
  63 + 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  64 + 7817A8D29BB68F50E5117819 /* Pods_CNLiveBPersonalVerificationModule_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLiveBPersonalVerificationModule_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  65 + 783A7A588E81DAD3752AAC05 /* Pods-CNLiveBPersonalVerificationModule_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveBPersonalVerificationModule_Tests.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveBPersonalVerificationModule_Tests/Pods-CNLiveBPersonalVerificationModule_Tests.debug.xcconfig"; sourceTree = "<group>"; };
  66 + 7FEBB718E90600F2D63EAB08 /* Pods-CNLiveBPersonalVerificationModule_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveBPersonalVerificationModule_Example.release.xcconfig"; path = "Target Support Files/Pods-CNLiveBPersonalVerificationModule_Example/Pods-CNLiveBPersonalVerificationModule_Example.release.xcconfig"; sourceTree = "<group>"; };
  67 + 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  68 + BFA9512AA979286EFC484573 /* CNLiveBPersonalVerificationModule.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = CNLiveBPersonalVerificationModule.podspec; path = ../CNLiveBPersonalVerificationModule.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
  69 + D6105CD3E0307C178FBE3F56 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
  70 +/* End PBXFileReference section */
  71 +
  72 +/* Begin PBXFrameworksBuildPhase section */
  73 + 6003F587195388D20070C39A /* Frameworks */ = {
  74 + isa = PBXFrameworksBuildPhase;
  75 + buildActionMask = 2147483647;
  76 + files = (
  77 + 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */,
  78 + 6003F592195388D20070C39A /* UIKit.framework in Frameworks */,
  79 + 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */,
  80 + B9D618F281EA888D94759421 /* Pods_CNLiveBPersonalVerificationModule_Example.framework in Frameworks */,
  81 + );
  82 + runOnlyForDeploymentPostprocessing = 0;
  83 + };
  84 + 6003F5AB195388D20070C39A /* Frameworks */ = {
  85 + isa = PBXFrameworksBuildPhase;
  86 + buildActionMask = 2147483647;
  87 + files = (
  88 + 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */,
  89 + 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */,
  90 + 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */,
  91 + 4E6D90B75C078198775B2788 /* Pods_CNLiveBPersonalVerificationModule_Tests.framework in Frameworks */,
  92 + );
  93 + runOnlyForDeploymentPostprocessing = 0;
  94 + };
  95 +/* End PBXFrameworksBuildPhase section */
  96 +
  97 +/* Begin PBXGroup section */
  98 + 6003F581195388D10070C39A = {
  99 + isa = PBXGroup;
  100 + children = (
  101 + 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */,
  102 + 6003F593195388D20070C39A /* Example for CNLiveBPersonalVerificationModule */,
  103 + 6003F5B5195388D20070C39A /* Tests */,
  104 + 6003F58C195388D20070C39A /* Frameworks */,
  105 + 6003F58B195388D20070C39A /* Products */,
  106 + 9E8625B53F4FF187786E57A5 /* Pods */,
  107 + );
  108 + sourceTree = "<group>";
  109 + };
  110 + 6003F58B195388D20070C39A /* Products */ = {
  111 + isa = PBXGroup;
  112 + children = (
  113 + 6003F58A195388D20070C39A /* CNLiveBPersonalVerificationModule_Example.app */,
  114 + 6003F5AE195388D20070C39A /* CNLiveBPersonalVerificationModule_Tests.xctest */,
  115 + );
  116 + name = Products;
  117 + sourceTree = "<group>";
  118 + };
  119 + 6003F58C195388D20070C39A /* Frameworks */ = {
  120 + isa = PBXGroup;
  121 + children = (
  122 + 6003F58D195388D20070C39A /* Foundation.framework */,
  123 + 6003F58F195388D20070C39A /* CoreGraphics.framework */,
  124 + 6003F591195388D20070C39A /* UIKit.framework */,
  125 + 6003F5AF195388D20070C39A /* XCTest.framework */,
  126 + 1B6B758677C7BEA3A31C708A /* Pods_CNLiveBPersonalVerificationModule_Example.framework */,
  127 + 7817A8D29BB68F50E5117819 /* Pods_CNLiveBPersonalVerificationModule_Tests.framework */,
  128 + );
  129 + name = Frameworks;
  130 + sourceTree = "<group>";
  131 + };
  132 + 6003F593195388D20070C39A /* Example for CNLiveBPersonalVerificationModule */ = {
  133 + isa = PBXGroup;
  134 + children = (
  135 + 6003F59C195388D20070C39A /* CNLIVEAppDelegate.h */,
  136 + 6003F59D195388D20070C39A /* CNLIVEAppDelegate.m */,
  137 + 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */,
  138 + 6003F5A5195388D20070C39A /* CNLIVEViewController.h */,
  139 + 6003F5A6195388D20070C39A /* CNLIVEViewController.m */,
  140 + 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */,
  141 + 6003F5A8195388D20070C39A /* Images.xcassets */,
  142 + 6003F594195388D20070C39A /* Supporting Files */,
  143 + );
  144 + name = "Example for CNLiveBPersonalVerificationModule";
  145 + path = CNLiveBPersonalVerificationModule;
  146 + sourceTree = "<group>";
  147 + };
  148 + 6003F594195388D20070C39A /* Supporting Files */ = {
  149 + isa = PBXGroup;
  150 + children = (
  151 + 6003F595195388D20070C39A /* CNLiveBPersonalVerificationModule-Info.plist */,
  152 + 6003F596195388D20070C39A /* InfoPlist.strings */,
  153 + 6003F599195388D20070C39A /* main.m */,
  154 + 6003F59B195388D20070C39A /* CNLiveBPersonalVerificationModule-Prefix.pch */,
  155 + );
  156 + name = "Supporting Files";
  157 + sourceTree = "<group>";
  158 + };
  159 + 6003F5B5195388D20070C39A /* Tests */ = {
  160 + isa = PBXGroup;
  161 + children = (
  162 + 6003F5BB195388D20070C39A /* Tests.m */,
  163 + 6003F5B6195388D20070C39A /* Supporting Files */,
  164 + );
  165 + path = Tests;
  166 + sourceTree = "<group>";
  167 + };
  168 + 6003F5B6195388D20070C39A /* Supporting Files */ = {
  169 + isa = PBXGroup;
  170 + children = (
  171 + 6003F5B7195388D20070C39A /* Tests-Info.plist */,
  172 + 6003F5B8195388D20070C39A /* InfoPlist.strings */,
  173 + 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */,
  174 + );
  175 + name = "Supporting Files";
  176 + sourceTree = "<group>";
  177 + };
  178 + 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = {
  179 + isa = PBXGroup;
  180 + children = (
  181 + BFA9512AA979286EFC484573 /* CNLiveBPersonalVerificationModule.podspec */,
  182 + 27702AE45A435A3D3F6D7F80 /* README.md */,
  183 + D6105CD3E0307C178FBE3F56 /* LICENSE */,
  184 + );
  185 + name = "Podspec Metadata";
  186 + sourceTree = "<group>";
  187 + };
  188 + 9E8625B53F4FF187786E57A5 /* Pods */ = {
  189 + isa = PBXGroup;
  190 + children = (
  191 + 2EE018FA9C0FF28273EA7BB2 /* Pods-CNLiveBPersonalVerificationModule_Example.debug.xcconfig */,
  192 + 7FEBB718E90600F2D63EAB08 /* Pods-CNLiveBPersonalVerificationModule_Example.release.xcconfig */,
  193 + 783A7A588E81DAD3752AAC05 /* Pods-CNLiveBPersonalVerificationModule_Tests.debug.xcconfig */,
  194 + 5116195DD3BA1DE9570EE346 /* Pods-CNLiveBPersonalVerificationModule_Tests.release.xcconfig */,
  195 + );
  196 + path = Pods;
  197 + sourceTree = "<group>";
  198 + };
  199 +/* End PBXGroup section */
  200 +
  201 +/* Begin PBXNativeTarget section */
  202 + 6003F589195388D20070C39A /* CNLiveBPersonalVerificationModule_Example */ = {
  203 + isa = PBXNativeTarget;
  204 + buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "CNLiveBPersonalVerificationModule_Example" */;
  205 + buildPhases = (
  206 + 3C3C879EC7A1C64649C9BCCF /* [CP] Check Pods Manifest.lock */,
  207 + 6003F586195388D20070C39A /* Sources */,
  208 + 6003F587195388D20070C39A /* Frameworks */,
  209 + 6003F588195388D20070C39A /* Resources */,
  210 + 4F2DF1EFF922B3D1F3D9B2AC /* [CP] Embed Pods Frameworks */,
  211 + );
  212 + buildRules = (
  213 + );
  214 + dependencies = (
  215 + );
  216 + name = CNLiveBPersonalVerificationModule_Example;
  217 + productName = CNLiveBPersonalVerificationModule;
  218 + productReference = 6003F58A195388D20070C39A /* CNLiveBPersonalVerificationModule_Example.app */;
  219 + productType = "com.apple.product-type.application";
  220 + };
  221 + 6003F5AD195388D20070C39A /* CNLiveBPersonalVerificationModule_Tests */ = {
  222 + isa = PBXNativeTarget;
  223 + buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "CNLiveBPersonalVerificationModule_Tests" */;
  224 + buildPhases = (
  225 + 262215FD0753982D7E546BFF /* [CP] Check Pods Manifest.lock */,
  226 + 6003F5AA195388D20070C39A /* Sources */,
  227 + 6003F5AB195388D20070C39A /* Frameworks */,
  228 + 6003F5AC195388D20070C39A /* Resources */,
  229 + );
  230 + buildRules = (
  231 + );
  232 + dependencies = (
  233 + 6003F5B4195388D20070C39A /* PBXTargetDependency */,
  234 + );
  235 + name = CNLiveBPersonalVerificationModule_Tests;
  236 + productName = CNLiveBPersonalVerificationModuleTests;
  237 + productReference = 6003F5AE195388D20070C39A /* CNLiveBPersonalVerificationModule_Tests.xctest */;
  238 + productType = "com.apple.product-type.bundle.unit-test";
  239 + };
  240 +/* End PBXNativeTarget section */
  241 +
  242 +/* Begin PBXProject section */
  243 + 6003F582195388D10070C39A /* Project object */ = {
  244 + isa = PBXProject;
  245 + attributes = {
  246 + CLASSPREFIX = CNLIVE;
  247 + LastUpgradeCheck = 0720;
  248 + ORGANIZATIONNAME = dawanzi;
  249 + TargetAttributes = {
  250 + 6003F5AD195388D20070C39A = {
  251 + TestTargetID = 6003F589195388D20070C39A;
  252 + };
  253 + };
  254 + };
  255 + buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "CNLiveBPersonalVerificationModule" */;
  256 + compatibilityVersion = "Xcode 3.2";
  257 + developmentRegion = English;
  258 + hasScannedForEncodings = 0;
  259 + knownRegions = (
  260 + English,
  261 + en,
  262 + Base,
  263 + );
  264 + mainGroup = 6003F581195388D10070C39A;
  265 + productRefGroup = 6003F58B195388D20070C39A /* Products */;
  266 + projectDirPath = "";
  267 + projectRoot = "";
  268 + targets = (
  269 + 6003F589195388D20070C39A /* CNLiveBPersonalVerificationModule_Example */,
  270 + 6003F5AD195388D20070C39A /* CNLiveBPersonalVerificationModule_Tests */,
  271 + );
  272 + };
  273 +/* End PBXProject section */
  274 +
  275 +/* Begin PBXResourcesBuildPhase section */
  276 + 6003F588195388D20070C39A /* Resources */ = {
  277 + isa = PBXResourcesBuildPhase;
  278 + buildActionMask = 2147483647;
  279 + files = (
  280 + 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */,
  281 + 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */,
  282 + 6003F5A9195388D20070C39A /* Images.xcassets in Resources */,
  283 + 6003F598195388D20070C39A /* InfoPlist.strings in Resources */,
  284 + );
  285 + runOnlyForDeploymentPostprocessing = 0;
  286 + };
  287 + 6003F5AC195388D20070C39A /* Resources */ = {
  288 + isa = PBXResourcesBuildPhase;
  289 + buildActionMask = 2147483647;
  290 + files = (
  291 + 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */,
  292 + );
  293 + runOnlyForDeploymentPostprocessing = 0;
  294 + };
  295 +/* End PBXResourcesBuildPhase section */
  296 +
  297 +/* Begin PBXShellScriptBuildPhase section */
  298 + 262215FD0753982D7E546BFF /* [CP] Check Pods Manifest.lock */ = {
  299 + isa = PBXShellScriptBuildPhase;
  300 + buildActionMask = 2147483647;
  301 + files = (
  302 + );
  303 + inputFileListPaths = (
  304 + );
  305 + inputPaths = (
  306 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  307 + "${PODS_ROOT}/Manifest.lock",
  308 + );
  309 + name = "[CP] Check Pods Manifest.lock";
  310 + outputFileListPaths = (
  311 + );
  312 + outputPaths = (
  313 + "$(DERIVED_FILE_DIR)/Pods-CNLiveBPersonalVerificationModule_Tests-checkManifestLockResult.txt",
  314 + );
  315 + runOnlyForDeploymentPostprocessing = 0;
  316 + shellPath = /bin/sh;
  317 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
  318 + showEnvVarsInLog = 0;
  319 + };
  320 + 3C3C879EC7A1C64649C9BCCF /* [CP] Check Pods Manifest.lock */ = {
  321 + isa = PBXShellScriptBuildPhase;
  322 + buildActionMask = 2147483647;
  323 + files = (
  324 + );
  325 + inputFileListPaths = (
  326 + );
  327 + inputPaths = (
  328 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  329 + "${PODS_ROOT}/Manifest.lock",
  330 + );
  331 + name = "[CP] Check Pods Manifest.lock";
  332 + outputFileListPaths = (
  333 + );
  334 + outputPaths = (
  335 + "$(DERIVED_FILE_DIR)/Pods-CNLiveBPersonalVerificationModule_Example-checkManifestLockResult.txt",
  336 + );
  337 + runOnlyForDeploymentPostprocessing = 0;
  338 + shellPath = /bin/sh;
  339 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
  340 + showEnvVarsInLog = 0;
  341 + };
  342 + 4F2DF1EFF922B3D1F3D9B2AC /* [CP] Embed Pods Frameworks */ = {
  343 + isa = PBXShellScriptBuildPhase;
  344 + buildActionMask = 2147483647;
  345 + files = (
  346 + );
  347 + inputPaths = (
  348 + "${PODS_ROOT}/Target Support Files/Pods-CNLiveBPersonalVerificationModule_Example/Pods-CNLiveBPersonalVerificationModule_Example-frameworks.sh",
  349 + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
  350 + "${BUILT_PRODUCTS_DIR}/CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule.framework",
  351 + "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework",
  352 + "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework",
  353 + "${BUILT_PRODUCTS_DIR}/CNLiveCustomUI/CNLiveCustomUI.framework",
  354 + "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
  355 + "${BUILT_PRODUCTS_DIR}/CNLiveTripartiteManagement/CNLiveTripartiteManagement.framework",
  356 + "${BUILT_PRODUCTS_DIR}/CNLiveUserManagement/CNLiveUserManagement.framework",
  357 + "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",
  358 + "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework",
  359 + "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework",
  360 + "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework",
  361 + "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
  362 + "${BUILT_PRODUCTS_DIR}/YYKit/YYKit.framework",
  363 + );
  364 + name = "[CP] Embed Pods Frameworks";
  365 + outputPaths = (
  366 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",
  367 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBPersonalVerificationModule.framework",
  368 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework",
  369 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework",
  370 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCustomUI.framework",
  371 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
  372 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveTripartiteManagement.framework",
  373 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveUserManagement.framework",
  374 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",
  375 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework",
  376 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework",
  377 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework",
  378 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
  379 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYKit.framework",
  380 + );
  381 + runOnlyForDeploymentPostprocessing = 0;
  382 + shellPath = /bin/sh;
  383 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CNLiveBPersonalVerificationModule_Example/Pods-CNLiveBPersonalVerificationModule_Example-frameworks.sh\"\n";
  384 + showEnvVarsInLog = 0;
  385 + };
  386 +/* End PBXShellScriptBuildPhase section */
  387 +
  388 +/* Begin PBXSourcesBuildPhase section */
  389 + 6003F586195388D20070C39A /* Sources */ = {
  390 + isa = PBXSourcesBuildPhase;
  391 + buildActionMask = 2147483647;
  392 + files = (
  393 + 6003F59E195388D20070C39A /* CNLIVEAppDelegate.m in Sources */,
  394 + 6003F5A7195388D20070C39A /* CNLIVEViewController.m in Sources */,
  395 + 6003F59A195388D20070C39A /* main.m in Sources */,
  396 + );
  397 + runOnlyForDeploymentPostprocessing = 0;
  398 + };
  399 + 6003F5AA195388D20070C39A /* Sources */ = {
  400 + isa = PBXSourcesBuildPhase;
  401 + buildActionMask = 2147483647;
  402 + files = (
  403 + 6003F5BC195388D20070C39A /* Tests.m in Sources */,
  404 + );
  405 + runOnlyForDeploymentPostprocessing = 0;
  406 + };
  407 +/* End PBXSourcesBuildPhase section */
  408 +
  409 +/* Begin PBXTargetDependency section */
  410 + 6003F5B4195388D20070C39A /* PBXTargetDependency */ = {
  411 + isa = PBXTargetDependency;
  412 + target = 6003F589195388D20070C39A /* CNLiveBPersonalVerificationModule_Example */;
  413 + targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */;
  414 + };
  415 +/* End PBXTargetDependency section */
  416 +
  417 +/* Begin PBXVariantGroup section */
  418 + 6003F596195388D20070C39A /* InfoPlist.strings */ = {
  419 + isa = PBXVariantGroup;
  420 + children = (
  421 + 6003F597195388D20070C39A /* en */,
  422 + );
  423 + name = InfoPlist.strings;
  424 + sourceTree = "<group>";
  425 + };
  426 + 6003F5B8195388D20070C39A /* InfoPlist.strings */ = {
  427 + isa = PBXVariantGroup;
  428 + children = (
  429 + 6003F5B9195388D20070C39A /* en */,
  430 + );
  431 + name = InfoPlist.strings;
  432 + sourceTree = "<group>";
  433 + };
  434 + 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */ = {
  435 + isa = PBXVariantGroup;
  436 + children = (
  437 + 71719F9E1E33DC2100824A3D /* Base */,
  438 + );
  439 + name = LaunchScreen.storyboard;
  440 + sourceTree = "<group>";
  441 + };
  442 +/* End PBXVariantGroup section */
  443 +
  444 +/* Begin XCBuildConfiguration section */
  445 + 6003F5BD195388D20070C39A /* Debug */ = {
  446 + isa = XCBuildConfiguration;
  447 + buildSettings = {
  448 + ALWAYS_SEARCH_USER_PATHS = NO;
  449 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  450 + CLANG_CXX_LIBRARY = "libc++";
  451 + CLANG_ENABLE_MODULES = YES;
  452 + CLANG_ENABLE_OBJC_ARC = YES;
  453 + CLANG_WARN_BOOL_CONVERSION = YES;
  454 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  455 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  456 + CLANG_WARN_EMPTY_BODY = YES;
  457 + CLANG_WARN_ENUM_CONVERSION = YES;
  458 + CLANG_WARN_INT_CONVERSION = YES;
  459 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  460 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  461 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  462 + COPY_PHASE_STRIP = NO;
  463 + ENABLE_TESTABILITY = YES;
  464 + GCC_C_LANGUAGE_STANDARD = gnu99;
  465 + GCC_DYNAMIC_NO_PIC = NO;
  466 + GCC_OPTIMIZATION_LEVEL = 0;
  467 + GCC_PREPROCESSOR_DEFINITIONS = (
  468 + "DEBUG=1",
  469 + "$(inherited)",
  470 + );
  471 + GCC_SYMBOLS_PRIVATE_EXTERN = NO;
  472 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  473 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  474 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  475 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  476 + GCC_WARN_UNUSED_FUNCTION = YES;
  477 + GCC_WARN_UNUSED_VARIABLE = YES;
  478 + IPHONEOS_DEPLOYMENT_TARGET = 9.3;
  479 + ONLY_ACTIVE_ARCH = YES;
  480 + SDKROOT = iphoneos;
  481 + TARGETED_DEVICE_FAMILY = "1,2";
  482 + };
  483 + name = Debug;
  484 + };
  485 + 6003F5BE195388D20070C39A /* Release */ = {
  486 + isa = XCBuildConfiguration;
  487 + buildSettings = {
  488 + ALWAYS_SEARCH_USER_PATHS = NO;
  489 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  490 + CLANG_CXX_LIBRARY = "libc++";
  491 + CLANG_ENABLE_MODULES = YES;
  492 + CLANG_ENABLE_OBJC_ARC = YES;
  493 + CLANG_WARN_BOOL_CONVERSION = YES;
  494 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  495 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  496 + CLANG_WARN_EMPTY_BODY = YES;
  497 + CLANG_WARN_ENUM_CONVERSION = YES;
  498 + CLANG_WARN_INT_CONVERSION = YES;
  499 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  500 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  501 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  502 + COPY_PHASE_STRIP = YES;
  503 + ENABLE_NS_ASSERTIONS = NO;
  504 + GCC_C_LANGUAGE_STANDARD = gnu99;
  505 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  506 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  507 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  508 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  509 + GCC_WARN_UNUSED_FUNCTION = YES;
  510 + GCC_WARN_UNUSED_VARIABLE = YES;
  511 + IPHONEOS_DEPLOYMENT_TARGET = 9.3;
  512 + SDKROOT = iphoneos;
  513 + TARGETED_DEVICE_FAMILY = "1,2";
  514 + VALIDATE_PRODUCT = YES;
  515 + };
  516 + name = Release;
  517 + };
  518 + 6003F5C0195388D20070C39A /* Debug */ = {
  519 + isa = XCBuildConfiguration;
  520 + baseConfigurationReference = 2EE018FA9C0FF28273EA7BB2 /* Pods-CNLiveBPersonalVerificationModule_Example.debug.xcconfig */;
  521 + buildSettings = {
  522 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  523 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  524 + GCC_PREFIX_HEADER = "CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule-Prefix.pch";
  525 + INFOPLIST_FILE = "CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule-Info.plist";
  526 + MODULE_NAME = ExampleApp;
  527 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  528 + PRODUCT_NAME = "$(TARGET_NAME)";
  529 + SWIFT_VERSION = 4.0;
  530 + WRAPPER_EXTENSION = app;
  531 + };
  532 + name = Debug;
  533 + };
  534 + 6003F5C1195388D20070C39A /* Release */ = {
  535 + isa = XCBuildConfiguration;
  536 + baseConfigurationReference = 7FEBB718E90600F2D63EAB08 /* Pods-CNLiveBPersonalVerificationModule_Example.release.xcconfig */;
  537 + buildSettings = {
  538 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  539 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  540 + GCC_PREFIX_HEADER = "CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule-Prefix.pch";
  541 + INFOPLIST_FILE = "CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule-Info.plist";
  542 + MODULE_NAME = ExampleApp;
  543 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  544 + PRODUCT_NAME = "$(TARGET_NAME)";
  545 + SWIFT_VERSION = 4.0;
  546 + WRAPPER_EXTENSION = app;
  547 + };
  548 + name = Release;
  549 + };
  550 + 6003F5C3195388D20070C39A /* Debug */ = {
  551 + isa = XCBuildConfiguration;
  552 + baseConfigurationReference = 783A7A588E81DAD3752AAC05 /* Pods-CNLiveBPersonalVerificationModule_Tests.debug.xcconfig */;
  553 + buildSettings = {
  554 + BUNDLE_LOADER = "$(TEST_HOST)";
  555 + FRAMEWORK_SEARCH_PATHS = (
  556 + "$(PLATFORM_DIR)/Developer/Library/Frameworks",
  557 + "$(inherited)",
  558 + "$(DEVELOPER_FRAMEWORKS_DIR)",
  559 + );
  560 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  561 + GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
  562 + GCC_PREPROCESSOR_DEFINITIONS = (
  563 + "DEBUG=1",
  564 + "$(inherited)",
  565 + );
  566 + INFOPLIST_FILE = "Tests/Tests-Info.plist";
  567 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  568 + PRODUCT_NAME = "$(TARGET_NAME)";
  569 + SWIFT_VERSION = 4.0;
  570 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CNLiveBPersonalVerificationModule_Example.app/CNLiveBPersonalVerificationModule_Example";
  571 + WRAPPER_EXTENSION = xctest;
  572 + };
  573 + name = Debug;
  574 + };
  575 + 6003F5C4195388D20070C39A /* Release */ = {
  576 + isa = XCBuildConfiguration;
  577 + baseConfigurationReference = 5116195DD3BA1DE9570EE346 /* Pods-CNLiveBPersonalVerificationModule_Tests.release.xcconfig */;
  578 + buildSettings = {
  579 + BUNDLE_LOADER = "$(TEST_HOST)";
  580 + FRAMEWORK_SEARCH_PATHS = (
  581 + "$(PLATFORM_DIR)/Developer/Library/Frameworks",
  582 + "$(inherited)",
  583 + "$(DEVELOPER_FRAMEWORKS_DIR)",
  584 + );
  585 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  586 + GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
  587 + INFOPLIST_FILE = "Tests/Tests-Info.plist";
  588 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  589 + PRODUCT_NAME = "$(TARGET_NAME)";
  590 + SWIFT_VERSION = 4.0;
  591 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CNLiveBPersonalVerificationModule_Example.app/CNLiveBPersonalVerificationModule_Example";
  592 + WRAPPER_EXTENSION = xctest;
  593 + };
  594 + name = Release;
  595 + };
  596 +/* End XCBuildConfiguration section */
  597 +
  598 +/* Begin XCConfigurationList section */
  599 + 6003F585195388D10070C39A /* Build configuration list for PBXProject "CNLiveBPersonalVerificationModule" */ = {
  600 + isa = XCConfigurationList;
  601 + buildConfigurations = (
  602 + 6003F5BD195388D20070C39A /* Debug */,
  603 + 6003F5BE195388D20070C39A /* Release */,
  604 + );
  605 + defaultConfigurationIsVisible = 0;
  606 + defaultConfigurationName = Release;
  607 + };
  608 + 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "CNLiveBPersonalVerificationModule_Example" */ = {
  609 + isa = XCConfigurationList;
  610 + buildConfigurations = (
  611 + 6003F5C0195388D20070C39A /* Debug */,
  612 + 6003F5C1195388D20070C39A /* Release */,
  613 + );
  614 + defaultConfigurationIsVisible = 0;
  615 + defaultConfigurationName = Release;
  616 + };
  617 + 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "CNLiveBPersonalVerificationModule_Tests" */ = {
  618 + isa = XCConfigurationList;
  619 + buildConfigurations = (
  620 + 6003F5C3195388D20070C39A /* Debug */,
  621 + 6003F5C4195388D20070C39A /* Release */,
  622 + );
  623 + defaultConfigurationIsVisible = 0;
  624 + defaultConfigurationName = Release;
  625 + };
  626 +/* End XCConfigurationList section */
  627 + };
  628 + rootObject = 6003F582195388D10070C39A /* Project object */;
  629 +}
... ...
Example/CNLiveBPersonalVerificationModule.xcodeproj/xcshareddata/xcschemes/CNLiveBPersonalVerificationModule-Example.xcscheme 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "0720"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "6003F589195388D20070C39A"
  18 + BuildableName = "CNLiveBPersonalVerificationModule_Example.app"
  19 + BlueprintName = "CNLiveBPersonalVerificationModule_Example"
  20 + ReferencedContainer = "container:CNLiveBPersonalVerificationModule.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + <TestableReference
  32 + skipped = "NO">
  33 + <BuildableReference
  34 + BuildableIdentifier = "primary"
  35 + BlueprintIdentifier = "6003F5AD195388D20070C39A"
  36 + BuildableName = "CNLiveBPersonalVerificationModule_Tests.xctest"
  37 + BlueprintName = "CNLiveBPersonalVerificationModule_Tests"
  38 + ReferencedContainer = "container:CNLiveBPersonalVerificationModule.xcodeproj">
  39 + </BuildableReference>
  40 + </TestableReference>
  41 + </Testables>
  42 + <MacroExpansion>
  43 + <BuildableReference
  44 + BuildableIdentifier = "primary"
  45 + BlueprintIdentifier = "6003F589195388D20070C39A"
  46 + BuildableName = "CNLiveBPersonalVerificationModule_Example.app"
  47 + BlueprintName = "CNLiveBPersonalVerificationModule_Example"
  48 + ReferencedContainer = "container:CNLiveBPersonalVerificationModule.xcodeproj">
  49 + </BuildableReference>
  50 + </MacroExpansion>
  51 + <AdditionalOptions>
  52 + </AdditionalOptions>
  53 + </TestAction>
  54 + <LaunchAction
  55 + buildConfiguration = "Debug"
  56 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  57 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  58 + launchStyle = "0"
  59 + useCustomWorkingDirectory = "NO"
  60 + ignoresPersistentStateOnLaunch = "NO"
  61 + debugDocumentVersioning = "YES"
  62 + debugServiceExtension = "internal"
  63 + allowLocationSimulation = "YES">
  64 + <BuildableProductRunnable
  65 + runnableDebuggingMode = "0">
  66 + <BuildableReference
  67 + BuildableIdentifier = "primary"
  68 + BlueprintIdentifier = "6003F589195388D20070C39A"
  69 + BuildableName = "CNLiveBPersonalVerificationModule_Example.app"
  70 + BlueprintName = "CNLiveBPersonalVerificationModule_Example"
  71 + ReferencedContainer = "container:CNLiveBPersonalVerificationModule.xcodeproj">
  72 + </BuildableReference>
  73 + </BuildableProductRunnable>
  74 + <AdditionalOptions>
  75 + </AdditionalOptions>
  76 + </LaunchAction>
  77 + <ProfileAction
  78 + buildConfiguration = "Release"
  79 + shouldUseLaunchSchemeArgsEnv = "YES"
  80 + savedToolIdentifier = ""
  81 + useCustomWorkingDirectory = "NO"
  82 + debugDocumentVersioning = "YES">
  83 + <BuildableProductRunnable
  84 + runnableDebuggingMode = "0">
  85 + <BuildableReference
  86 + BuildableIdentifier = "primary"
  87 + BlueprintIdentifier = "6003F589195388D20070C39A"
  88 + BuildableName = "CNLiveBPersonalVerificationModule_Example.app"
  89 + BlueprintName = "CNLiveBPersonalVerificationModule_Example"
  90 + ReferencedContainer = "container:CNLiveBPersonalVerificationModule.xcodeproj">
  91 + </BuildableReference>
  92 + </BuildableProductRunnable>
  93 + </ProfileAction>
  94 + <AnalyzeAction
  95 + buildConfiguration = "Debug">
  96 + </AnalyzeAction>
  97 + <ArchiveAction
  98 + buildConfiguration = "Release"
  99 + revealArchiveInOrganizer = "YES">
  100 + </ArchiveAction>
  101 +</Scheme>
... ...
Example/CNLiveBPersonalVerificationModule/Base.lproj/LaunchScreen.storyboard 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  10 + </dependencies>
  11 + <scenes>
  12 + <!--View Controller-->
  13 + <scene sceneID="EHf-IW-A2E">
  14 + <objects>
  15 + <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  16 + <layoutGuides>
  17 + <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
  18 + <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
  19 + </layoutGuides>
  20 + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
  21 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  22 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  23 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  24 + </view>
  25 + </viewController>
  26 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
  27 + </objects>
  28 + <point key="canvasLocation" x="53" y="375"/>
  29 + </scene>
  30 + </scenes>
  31 +</document>
... ...
Example/CNLiveBPersonalVerificationModule/Base.lproj/Main.storyboard 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="whP-gf-Uak">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  10 + </dependencies>
  11 + <scenes>
  12 + <!--View Controller-->
  13 + <scene sceneID="wQg-tq-qST">
  14 + <objects>
  15 + <viewController id="whP-gf-Uak" customClass="CNLIVEViewController" sceneMemberID="viewController">
  16 + <layoutGuides>
  17 + <viewControllerLayoutGuide type="top" id="uEw-UM-LJ8"/>
  18 + <viewControllerLayoutGuide type="bottom" id="Mvr-aV-6Um"/>
  19 + </layoutGuides>
  20 + <view key="view" contentMode="scaleToFill" id="TpU-gO-2f1">
  21 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  22 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  23 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  24 + </view>
  25 + </viewController>
  26 + <placeholder placeholderIdentifier="IBFirstResponder" id="tc2-Qw-aMS" userLabel="First Responder" sceneMemberID="firstResponder"/>
  27 + </objects>
  28 + <point key="canvasLocation" x="305" y="433"/>
  29 + </scene>
  30 + </scenes>
  31 +</document>
... ...
Example/CNLiveBPersonalVerificationModule/CNLIVEAppDelegate.h 0 → 100644
  1 +//
  2 +// CNLIVEAppDelegate.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by dawanzi on 04/06/2020.
  6 +// Copyright (c) 2020 dawanzi. All rights reserved.
  7 +//
  8 +
  9 +@import UIKit;
  10 +
  11 +@interface CNLIVEAppDelegate : UIResponder <UIApplicationDelegate>
  12 +
  13 +@property (strong, nonatomic) UIWindow *window;
  14 +
  15 +@end
... ...
Example/CNLiveBPersonalVerificationModule/CNLIVEAppDelegate.m 0 → 100644
  1 +//
  2 +// CNLIVEAppDelegate.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by dawanzi on 04/06/2020.
  6 +// Copyright (c) 2020 dawanzi. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLIVEAppDelegate.h"
  10 +#import "CNLIVEViewController.h"
  11 +@implementation CNLIVEAppDelegate
  12 +
  13 +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  14 +{
  15 + self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  16 + self.window.backgroundColor = [UIColor whiteColor];
  17 + CNLIVEViewController *vc = [[CNLIVEViewController alloc]init];
  18 + UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
  19 + self.window.rootViewController = nav;
  20 + [self.window makeKeyAndVisible];
  21 + return YES;
  22 +}
  23 +
  24 +- (void)applicationWillResignActive:(UIApplication *)application
  25 +{
  26 + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
  27 + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
  28 +}
  29 +
  30 +- (void)applicationDidEnterBackground:(UIApplication *)application
  31 +{
  32 + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
  33 + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
  34 +}
  35 +
  36 +- (void)applicationWillEnterForeground:(UIApplication *)application
  37 +{
  38 + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
  39 +}
  40 +
  41 +- (void)applicationDidBecomeActive:(UIApplication *)application
  42 +{
  43 + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
  44 +}
  45 +
  46 +- (void)applicationWillTerminate:(UIApplication *)application
  47 +{
  48 + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
  49 +}
  50 +
  51 +@end
... ...
Example/CNLiveBPersonalVerificationModule/CNLIVEViewController.h 0 → 100644
  1 +//
  2 +// CNLIVEViewController.h
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by dawanzi on 04/06/2020.
  6 +// Copyright (c) 2020 dawanzi. All rights reserved.
  7 +//
  8 +
  9 +@import UIKit;
  10 +
  11 +@interface CNLIVEViewController : UIViewController
  12 +
  13 +@end
... ...
Example/CNLiveBPersonalVerificationModule/CNLIVEViewController.m 0 → 100644
  1 +//
  2 +// CNLIVEViewController.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by dawanzi on 04/06/2020.
  6 +// Copyright (c) 2020 dawanzi. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLIVEViewController.h"
  10 +#import "CNBPersonalVerificationController.h"
  11 +@interface CNLIVEViewController ()
  12 +
  13 +@end
  14 +
  15 +@implementation CNLIVEViewController
  16 +
  17 +- (void)viewDidLoad
  18 +{
  19 + [super viewDidLoad];
  20 + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  21 + button.frame = CGRectMake(100, 100, 100, 100);
  22 + button.backgroundColor = [UIColor cyanColor];
  23 + [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
  24 + [self.view addSubview:button];
  25 +}
  26 +- (void)buttonAction {
  27 + CNBPersonalVerificationController *vc = [[CNBPersonalVerificationController alloc]init];
  28 + [self.navigationController pushViewController:vc animated:YES];
  29 +}
  30 +- (void)didReceiveMemoryWarning
  31 +{
  32 + [super didReceiveMemoryWarning];
  33 + // Dispose of any resources that can be recreated.
  34 +}
  35 +
  36 +@end
... ...
Example/CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule-Info.plist 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleDisplayName</key>
  8 + <string>${PRODUCT_NAME}</string>
  9 + <key>CFBundleExecutable</key>
  10 + <string>${EXECUTABLE_NAME}</string>
  11 + <key>CFBundleIdentifier</key>
  12 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  13 + <key>CFBundleInfoDictionaryVersion</key>
  14 + <string>6.0</string>
  15 + <key>CFBundleName</key>
  16 + <string>${PRODUCT_NAME}</string>
  17 + <key>CFBundlePackageType</key>
  18 + <string>APPL</string>
  19 + <key>CFBundleShortVersionString</key>
  20 + <string>1.0</string>
  21 + <key>CFBundleSignature</key>
  22 + <string>????</string>
  23 + <key>CFBundleVersion</key>
  24 + <string>1.0</string>
  25 + <key>LSRequiresIPhoneOS</key>
  26 + <true/>
  27 + <key>UILaunchStoryboardName</key>
  28 + <string>LaunchScreen</string>
  29 + <key>UIMainStoryboardFile</key>
  30 + <string>Main</string>
  31 + <key>UIRequiredDeviceCapabilities</key>
  32 + <array>
  33 + <string>armv7</string>
  34 + </array>
  35 + <key>UISupportedInterfaceOrientations</key>
  36 + <array>
  37 + <string>UIInterfaceOrientationPortrait</string>
  38 + <string>UIInterfaceOrientationLandscapeLeft</string>
  39 + <string>UIInterfaceOrientationLandscapeRight</string>
  40 + </array>
  41 + <key>UISupportedInterfaceOrientations~ipad</key>
  42 + <array>
  43 + <string>UIInterfaceOrientationPortrait</string>
  44 + <string>UIInterfaceOrientationPortraitUpsideDown</string>
  45 + <string>UIInterfaceOrientationLandscapeLeft</string>
  46 + <string>UIInterfaceOrientationLandscapeRight</string>
  47 + </array>
  48 +</dict>
  49 +</plist>
... ...
Example/CNLiveBPersonalVerificationModule/CNLiveBPersonalVerificationModule-Prefix.pch 0 → 100644
  1 +//
  2 +// Prefix header
  3 +//
  4 +// The contents of this file are implicitly included at the beginning of every source file.
  5 +//
  6 +
  7 +#import <Availability.h>
  8 +
  9 +#ifndef __IPHONE_5_0
  10 +#warning "This project uses features only available in iOS SDK 5.0 and later."
  11 +#endif
  12 +
  13 +#ifdef __OBJC__
  14 + @import UIKit;
  15 + @import Foundation;
  16 +#endif
... ...
Example/CNLiveBPersonalVerificationModule/Images.xcassets/AppIcon.appiconset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "iphone",
  5 + "size" : "20x20",
  6 + "scale" : "2x"
  7 + },
  8 + {
  9 + "idiom" : "iphone",
  10 + "size" : "20x20",
  11 + "scale" : "3x"
  12 + },
  13 + {
  14 + "idiom" : "iphone",
  15 + "size" : "29x29",
  16 + "scale" : "2x"
  17 + },
  18 + {
  19 + "idiom" : "iphone",
  20 + "size" : "29x29",
  21 + "scale" : "3x"
  22 + },
  23 + {
  24 + "idiom" : "iphone",
  25 + "size" : "40x40",
  26 + "scale" : "2x"
  27 + },
  28 + {
  29 + "idiom" : "iphone",
  30 + "size" : "40x40",
  31 + "scale" : "3x"
  32 + },
  33 + {
  34 + "idiom" : "iphone",
  35 + "size" : "60x60",
  36 + "scale" : "2x"
  37 + },
  38 + {
  39 + "idiom" : "iphone",
  40 + "size" : "60x60",
  41 + "scale" : "3x"
  42 + },
  43 + {
  44 + "idiom" : "ipad",
  45 + "size" : "20x20",
  46 + "scale" : "1x"
  47 + },
  48 + {
  49 + "idiom" : "ipad",
  50 + "size" : "20x20",
  51 + "scale" : "2x"
  52 + },
  53 + {
  54 + "idiom" : "ipad",
  55 + "size" : "29x29",
  56 + "scale" : "1x"
  57 + },
  58 + {
  59 + "idiom" : "ipad",
  60 + "size" : "29x29",
  61 + "scale" : "2x"
  62 + },
  63 + {
  64 + "idiom" : "ipad",
  65 + "size" : "40x40",
  66 + "scale" : "1x"
  67 + },
  68 + {
  69 + "idiom" : "ipad",
  70 + "size" : "40x40",
  71 + "scale" : "2x"
  72 + },
  73 + {
  74 + "idiom" : "ipad",
  75 + "size" : "76x76",
  76 + "scale" : "1x"
  77 + },
  78 + {
  79 + "idiom" : "ipad",
  80 + "size" : "76x76",
  81 + "scale" : "2x"
  82 + },
  83 + {
  84 + "idiom" : "ipad",
  85 + "size" : "83.5x83.5",
  86 + "scale" : "2x"
  87 + },
  88 + {
  89 + "idiom" : "ios-marketing",
  90 + "size" : "1024x1024",
  91 + "scale" : "1x"
  92 + }
  93 + ],
  94 + "info" : {
  95 + "version" : 1,
  96 + "author" : "xcode"
  97 + }
  98 +}
... ...
Example/CNLiveBPersonalVerificationModule/en.lproj/InfoPlist.strings 0 → 100644
  1 +/* Localized versions of Info.plist keys */
  2 +
... ...
Example/CNLiveBPersonalVerificationModule/main.m 0 → 100644
  1 +//
  2 +// main.m
  3 +// CNLiveBPersonalVerificationModule
  4 +//
  5 +// Created by dawanzi on 04/06/2020.
  6 +// Copyright (c) 2020 dawanzi. All rights reserved.
  7 +//
  8 +
  9 +@import UIKit;
  10 +#import "CNLIVEAppDelegate.h"
  11 +
  12 +int main(int argc, char * argv[])
  13 +{
  14 + @autoreleasepool {
  15 + return UIApplicationMain(argc, argv, nil, NSStringFromClass([CNLIVEAppDelegate class]));
  16 + }
  17 +}
... ...
Example/Podfile 0 → 100644
  1 +use_frameworks!
  2 +source 'https://github.com/CocoaPods/Specs.git'
  3 +source 'http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git'
  4 +platform :ios, '9.0'
  5 +
  6 +target 'CNLiveBPersonalVerificationModule_Example' do
  7 + pod 'CNLiveBPersonalVerificationModule', :path => '../'
  8 +
  9 + target 'CNLiveBPersonalVerificationModule_Tests' do
  10 + inherit! :search_paths
  11 +
  12 +
  13 + end
  14 +end
... ...
Example/Tests/Tests-Info.plist 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>${EXECUTABLE_NAME}</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundlePackageType</key>
  14 + <string>BNDL</string>
  15 + <key>CFBundleShortVersionString</key>
  16 + <string>1.0</string>
  17 + <key>CFBundleSignature</key>
  18 + <string>????</string>
  19 + <key>CFBundleVersion</key>
  20 + <string>1</string>
  21 +</dict>
  22 +</plist>
... ...
Example/Tests/Tests-Prefix.pch 0 → 100644
  1 +// The contents of this file are implicitly included at the beginning of every test case source file.
  2 +
  3 +#ifdef __OBJC__
  4 +
  5 +
  6 +
  7 +#endif
... ...
Example/Tests/Tests.m 0 → 100644
  1 +//
  2 +// CNLiveBPersonalVerificationModuleTests.m
  3 +// CNLiveBPersonalVerificationModuleTests
  4 +//
  5 +// Created by dawanzi on 04/06/2020.
  6 +// Copyright (c) 2020 dawanzi. All rights reserved.
  7 +//
  8 +
  9 +@import XCTest;
  10 +
  11 +@interface Tests : XCTestCase
  12 +
  13 +@end
  14 +
  15 +@implementation Tests
  16 +
  17 +- (void)setUp
  18 +{
  19 + [super setUp];
  20 + // Put setup code here. This method is called before the invocation of each test method in the class.
  21 +}
  22 +
  23 +- (void)tearDown
  24 +{
  25 + // Put teardown code here. This method is called after the invocation of each test method in the class.
  26 + [super tearDown];
  27 +}
  28 +
  29 +- (void)testExample
  30 +{
  31 + XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
  32 +}
  33 +
  34 +@end
  35 +
... ...
Example/Tests/en.lproj/InfoPlist.strings 0 → 100644
  1 +/* Localized versions of Info.plist keys */
  2 +
... ...
LICENSE 0 → 100644
  1 +Copyright (c) 2020 dawanzi <1427945373@qq.com>
  2 +
  3 +Permission is hereby granted, free of charge, to any person obtaining a copy
  4 +of this software and associated documentation files (the "Software"), to deal
  5 +in the Software without restriction, including without limitation the rights
  6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7 +copies of the Software, and to permit persons to whom the Software is
  8 +furnished to do so, subject to the following conditions:
  9 +
  10 +The above copyright notice and this permission notice shall be included in
  11 +all copies or substantial portions of the Software.
  12 +
  13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19 +THE SOFTWARE.
... ...
README.md
1   -B端个人资料验证
2 1 \ No newline at end of file
  2 +# CNLiveBPersonalVerificationModule
  3 +
  4 +[![CI Status](https://img.shields.io/travis/dawanzi/CNLiveBPersonalVerificationModule.svg?style=flat)](https://travis-ci.org/dawanzi/CNLiveBPersonalVerificationModule)
  5 +[![Version](https://img.shields.io/cocoapods/v/CNLiveBPersonalVerificationModule.svg?style=flat)](https://cocoapods.org/pods/CNLiveBPersonalVerificationModule)
  6 +[![License](https://img.shields.io/cocoapods/l/CNLiveBPersonalVerificationModule.svg?style=flat)](https://cocoapods.org/pods/CNLiveBPersonalVerificationModule)
  7 +[![Platform](https://img.shields.io/cocoapods/p/CNLiveBPersonalVerificationModule.svg?style=flat)](https://cocoapods.org/pods/CNLiveBPersonalVerificationModule)
  8 +
  9 +## Example
  10 +
  11 +To run the example project, clone the repo, and run `pod install` from the Example directory first.
  12 +
  13 +## Requirements
  14 +
  15 +## Installation
  16 +
  17 +CNLiveBPersonalVerificationModule is available through [CocoaPods](https://cocoapods.org). To install
  18 +it, simply add the following line to your Podfile:
  19 +
  20 +```ruby
  21 +pod 'CNLiveBPersonalVerificationModule'
  22 +```
  23 +
  24 +## Author
  25 +
  26 +dawanzi, 1427945373@qq.com
  27 +
  28 +## License
  29 +
  30 +CNLiveBPersonalVerificationModule is available under the MIT license. See the LICENSE file for more info.
... ...
_Pods.xcodeproj 0 → 120000
  1 +Example/Pods/Pods.xcodeproj
0 2 \ No newline at end of file
... ...