项目搜索历史标签 及 现场 新增标签更换库  collection view 添加背景颜色 cell修改样式
4 files added
5 files modified
643 ■■■■■ changed files
IphoneBIMe/IphoneBIMe.xcodeproj/project.pbxproj 20 ●●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/Project/Examine/AddViews/PBPersonChooseTableViewCell.m 147 ●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/Project/Examine/ViewControllers/PBAddExamineViewController.m 94 ●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/Project/Examine/ViewControllers/PBCheckTaskViewController.m 108 ●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/KeyWordCell.h 18 ●●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/KeyWordCell.m 38 ●●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/LBKeyWordLayout.h 13 ●●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/LBKeyWordLayout.m 151 ●●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/PBProjectSearchView.m 54 ●●●● patch | view | raw | blame | history
IphoneBIMe/IphoneBIMe.xcodeproj/project.pbxproj
@@ -268,6 +268,8 @@
        2CFB177E2101CC1200B6BF1A /* PBModelsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFB177D2101CC1200B6BF1A /* PBModelsTableViewCell.m */; };
        2CFD790624C02CA9006B6E75 /* PBInputCodeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFD790524C02CA8006B6E75 /* PBInputCodeTableViewCell.m */; };
        4C07019729B85E4000F29889 /* PBNewVehicleTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C07019629B85E4000F29889 /* PBNewVehicleTableViewCell.m */; };
        4C0701B729BED74000F29889 /* KeyWordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0701B329BED74000F29889 /* KeyWordCell.m */; };
        4C0701B829BED74000F29889 /* LBKeyWordLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0701B529BED74000F29889 /* LBKeyWordLayout.m */; };
        4C385C912988F3DF00D9F626 /* SGScanViewConfigure.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C385C742988F3DF00D9F626 /* SGScanViewConfigure.m */; };
        4C385C922988F3DF00D9F626 /* SGScanView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C385C752988F3DF00D9F626 /* SGScanView.m */; };
        4C385C932988F3DF00D9F626 /* SGQRCode.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4C385C782988F3DF00D9F626 /* SGQRCode.bundle */; };
@@ -1763,6 +1765,10 @@
        2E141B7B69B652435715D5BB /* Pods-IphoneBIMe.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IphoneBIMe.release.xcconfig"; path = "Pods/Target Support Files/Pods-IphoneBIMe/Pods-IphoneBIMe.release.xcconfig"; sourceTree = "<group>"; };
        4C07019529B85E4000F29889 /* PBNewVehicleTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PBNewVehicleTableViewCell.h; sourceTree = "<group>"; };
        4C07019629B85E4000F29889 /* PBNewVehicleTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PBNewVehicleTableViewCell.m; sourceTree = "<group>"; };
        4C0701B329BED74000F29889 /* KeyWordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KeyWordCell.m; sourceTree = "<group>"; };
        4C0701B429BED74000F29889 /* LBKeyWordLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LBKeyWordLayout.h; sourceTree = "<group>"; };
        4C0701B529BED74000F29889 /* LBKeyWordLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LBKeyWordLayout.m; sourceTree = "<group>"; };
        4C0701B629BED74000F29889 /* KeyWordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyWordCell.h; sourceTree = "<group>"; };
        4C385C722988F3DF00D9F626 /* SGQRCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SGQRCode.h; sourceTree = "<group>"; };
        4C385C742988F3DF00D9F626 /* SGScanViewConfigure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SGScanViewConfigure.m; sourceTree = "<group>"; };
        4C385C752988F3DF00D9F626 /* SGScanView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SGScanView.m; sourceTree = "<group>"; };
@@ -2271,6 +2277,7 @@
        2C2A6F0E20F8948C00218D5C /* Views */ = {
            isa = PBXGroup;
            children = (
                4C0701B229BED74000F29889 /* AutoCollectView */,
                2CBB3FC4248A45C8003D3089 /* AutoFitLabel */,
                2C5067F720FDB30600D5F47A /* Menu */,
                2CA07076246B991500F9D6D1 /* PBAnnotationView.h */,
@@ -4040,6 +4047,17 @@
            name = Frameworks;
            sourceTree = "<group>";
        };
        4C0701B229BED74000F29889 /* AutoCollectView */ = {
            isa = PBXGroup;
            children = (
                4C0701B329BED74000F29889 /* KeyWordCell.m */,
                4C0701B429BED74000F29889 /* LBKeyWordLayout.h */,
                4C0701B529BED74000F29889 /* LBKeyWordLayout.m */,
                4C0701B629BED74000F29889 /* KeyWordCell.h */,
            );
            path = AutoCollectView;
            sourceTree = "<group>";
        };
        4C385C712988F3DF00D9F626 /* SGQRCode */ = {
            isa = PBXGroup;
            children = (
@@ -4662,6 +4680,7 @@
                2C5067F620FD935100D5F47A /* PBMineView.m in Sources */,
                2C66CBED216C811B0039C19A /* PBProjectPower.m in Sources */,
                4CD610FE28C052B900BBBF67 /* PBSuperviseTableViewCell.m in Sources */,
                4C0701B829BED74000F29889 /* LBKeyWordLayout.m in Sources */,
                2C16401528C39A7A001DFF31 /* PBMaterialPlanModel.m in Sources */,
                4C8488712901529C0095E7C3 /* PBScrollVpView.m in Sources */,
                2C01A388211182F600D75B3F /* PBDocBaseController.mm in Sources */,
@@ -4748,6 +4767,7 @@
                2C69964A2435C7820015EE17 /* PBStructureViewController.m in Sources */,
                2C2CB6652125632400E35BB5 /* PBPersonTableViewCell.m in Sources */,
                2CBB3FEE2493634F003D3089 /* PBCodeTableViewCell.m in Sources */,
                4C0701B729BED74000F29889 /* KeyWordCell.m in Sources */,
                4C90992628D80F0B004B30C4 /* IQKeyboardManager.m in Sources */,
                2C1AC3F8211AFAE900D3C412 /* PBIssueNavModel.m in Sources */,
                2C8DD18B247F704C009B6C26 /* JYPulleyScrollView.m in Sources */,
IphoneBIMe/IphoneBIMe/Classes/Project/Examine/AddViews/PBPersonChooseTableViewCell.m
@@ -10,11 +10,11 @@
#import "PBExamineAddModel.h"
#import "PBPersonListView.h"
#import "PBPersonModel.h"
#import "MSSAutoresizeLabelFlowLayout.h"
#import "LBKeyWordLayout.h"
#import "KeyWordCell.h"
#import "PBPersonListCollectionViewCell.h"
#import "MSSAutoresizeLabelFlowConfig.h"
static NSString *const cellId = @"cellId";
@interface PBPersonChooseTableViewCell()<UICollectionViewDataSource,UICollectionViewDelegate, MSSAutoresizeLabelFlowLayoutDataSource,MSSAutoresizeLabelFlowLayoutDelegate>
@interface PBPersonChooseTableViewCell()<UICollectionViewDataSource,UICollectionViewDelegate>
@property (nonatomic,strong) UICollectionView *collection;
@property (nonatomic,strong) NSMutableArray *data;
//@property (nonatomic,copy) selectedHandler  handler;
@@ -25,6 +25,8 @@
@property (nonatomic, weak) UIView *collectionBg;
@property (nonatomic, assign) BOOL isLayout;
@property (nonatomic, assign) CGFloat height;
@property (strong, nonatomic) LBKeyWordLayout *layout;
@end
@implementation PBPersonChooseTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
@@ -69,28 +71,17 @@
    self.titleL = titleL;
    self.personL = personL;
    self.chooseBtn = chooseBtn;
//    UIView *collectionBg = [[UIView alloc] init];
//    collectionBg.backgroundColor = [UIColor yellowColor];
//    [self.contentView addSubview:collectionBg];
//    [collectionBg mas_makeConstraints:^(MASConstraintMaker *make) {
//        make.top.equalTo(self.contentView).offset(53);
//        make.left.equalTo(self.contentView).offset(100);
//        make.right.equalTo(self.contentView).offset(-20);
//        make.height.equalTo(@1);
//        make.bottom.equalTo(self.contentView).offset(-15);
//    }];
    self.layout = [[LBKeyWordLayout alloc] init];
    self.layout.estimatedItemSize = CGSizeMake(80, 30);
    self.layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
    MSSAutoresizeLabelFlowLayout *layout = [[MSSAutoresizeLabelFlowLayout alloc]init];
    layout.delegate = self;
    layout.dataSource = self;
    self.collection = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout];
    self.collection = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:self.layout];
    self.collection.backgroundColor = [UIColor whiteColor];
    self.collection.allowsMultipleSelection = YES;
//    self.collection.allowsMultipleSelection = YES;
    self.collection.delegate = self;
    self.collection.dataSource = self;
//    self.collection.scrollEnabled = NO;
    [self.collection registerClass:[PBPersonListCollectionViewCell class] forCellWithReuseIdentifier:cellId];
    [self.collection registerClass:[KeyWordCell class] forCellWithReuseIdentifier:@"KeyWordCell"];
    [self.contentView addSubview:self.collection];
    [self.collection mas_makeConstraints:^(MASConstraintMaker *make) {
//        make.top.left.right.bottom.equalTo(collectionBg);
@@ -138,22 +129,15 @@
    [self.collection layoutIfNeeded];
    if (self.examineAddModel.personArr.count > 0) {
        [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
            make.height.equalTo(@(76));
//            make.bottom.equalTo(self.contentView).offset(-(bottom));
            make.height.equalTo(@(70));
        }];
    }else {
        [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
            make.height.equalTo(@(1));
//            make.bottom.equalTo(self.contentView).offset(-(bottom));
        }];
    }
    
    self.titleL.text = examineAddModel.title;
//    if (examineAddModel.personArr.count > 10) {
//        self.totalNumberBtn.hidden = NO;
//    }else {
//        self.totalNumberBtn.hidden = YES;
//    }
    if (examineAddModel.personArr.count > 0) {
        self.personL.textColor = PBColor(40, 58, 79);
        self.personL.text = [NSString stringWithFormat:@"已选择%zd人", examineAddModel.personArr.count];
@@ -161,117 +145,20 @@
        self.personL.textColor = PBColor(204, 204, 204);
        self.personL.text = examineAddModel.prompt;
    }
//    if (self.data.count == 0) {
//        [self.collectionBg mas_updateConstraints:^(MASConstraintMaker *make) {
//            make.height.equalTo(@1);
//        }];
//    }
//    [self.collection setNeedsLayout];
//    [self.collection layoutIfNeeded];
//    if (self.examineAddModel.personArr.count > 0) {
//        NSLog(@"hhhhhhhhhhhhhhhhh-%f-%f",self.collection.contentSize.height,self.height);
//        NSLog(@"wwwwwwwwwwwww-%f",self.collection.collectionViewLayout.collectionViewContentSize.height);
//        [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
//            make.height.equalTo(@(self.collection.collectionViewLayout.collectionViewContentSize.height));
////            make.bottom.equalTo(self.contentView).offset(-(bottom));
//        }];
//    }else {
//        [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
//            make.height.equalTo(@(1));
////            make.bottom.equalTo(self.contentView).offset(-(bottom));
//        }];
//    }
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
//    if (self.data.count > 10) {
//        return 10;
//    }else {
        return self.data.count;
//    }
    return self.data.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    PBPersonListCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
    KeyWordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"KeyWordCell" forIndexPath:indexPath];
    cell.maxWidthConstraint.constant = CGRectGetWidth(collectionView.bounds) - self.layout.sectionInset.left - self.layout.sectionInset.right - cell.layoutMargins.left - cell.layoutMargins.right - 10;
    cell.textLabel.numberOfLines = 1;
    PBPersonModel *model = self.data[indexPath.item];
    [cell configCellWithTitle:model.RealName];
    cell.textLabel.text = model.RealName;
    return cell;
}
- (NSString *)titleForLabelAtIndexPath:(NSIndexPath *)indexPath {
    PBPersonModel *model = self.data[indexPath.item];
    return model.RealName;
}
- (void)layoutFinishWithNumberOfline:(NSInteger)number {
    NSLog(@"===-=-=-=-=-=-=-=%zd",number);
//    static NSInteger numberCount;
//    if (numberCount == number) {
//        return;
//    }
//    numberCount = number;
    MSSAutoresizeLabelFlowConfig *config = [MSSAutoresizeLabelFlowConfig shareConfig];
    CGFloat h = config.contentInsets.top+config.contentInsets.bottom+config.itemHeight*number+config.lineSpace*(number-1);
    self.height = h;
    NSLog(@"mmmmmmmmmmmmmmmm-%f",h);
     //    [self.contentView mas_updateConstraints:^(MASConstraintMaker *make) {
//        make.bottom.equalTo(self.collection.mas_bottom).offset(15);
//    }];
//    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, h);
//    [UIView animateWithDuration:0.2 animations:^{
//        self.collection.frame = self.bounds;
//    }];
//    [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
//        make.height.equalTo(@(h));
//    }];
//    [self.contentView layoutIfNeeded];
//    CGFloat botton;
//    if (self.examineAddModel.personArr.count > 10) {
//        botton = 15.f + 32.f;
//        self.totalNumberBtn.hidden = NO;
//        [self.totalNumberBtn setTitle:[NSString stringWithFormat:@"查看全部%zd个%@", self.examineAddModel.personArr.count, self.examineAddModel.title] forState:UIControlStateNormal];
//    }else {
//        botton = 15.f;
//        self.totalNumberBtn.hidden = YES;
//    }
//    [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
//        make.bottom.equalTo(self.contentView).offset(-(botton));
//    }];
//    CGFloat bottom;
//    if (self.examineAddModel.personArr.count > 10) {
//        self.totalNumberBtn.hidden = NO;
//        bottom = 32 + 15;
//    }else {
//        self.totalNumberBtn.hidden = YES;
//        bottom = 15;
//    }
//    NSLog(@"======%f",h);
//    if (h <= 0) {
//        h = 1.f;
//    }
//    self.examineAddModel.height = h;
//    [self.collection mas_updateConstraints:^(MASConstraintMaker *make) {
//        make.height.equalTo(@(h));
//        make.bottom.equalTo(self.contentView).offset(-(bottom));
//    }];
//    if (self.examineAddModel.height == 0) {
////        self.examineAddModel.height = h;
//        if (self.ReLoadBlock) {
//            self.ReLoadBlock(h);
//        }
//    }
}
- (void)awakeFromNib {
IphoneBIMe/IphoneBIMe/Classes/Project/Examine/ViewControllers/PBAddExamineViewController.m
@@ -25,7 +25,6 @@
#import "PBPersonModel.h"
#import "PBArtifactsInfoModel.h"
#import "PBProjectModel.h"
#import "MSSAutoresizeLabelFlow.h"
#import "PBTextInputTableViewCell.h"
#import "PBTopTitleTableViewCell.h"
#import "PBTimeChooseTableViewCell.h"
@@ -46,6 +45,8 @@
#import "PBCheckHeaderView.h"
#import "LXFCameraController.h"
#import "PBVideoPlayViewController.h"
#import "LBKeyWordLayout.h"
#import "KeyWordCell.h"
static NSString *const inputCellID = @"InputCellID";
static NSString *const titleCellID = @"titleCellID";
static NSString *const oneChooseCellID = @"oneChooseCellID";
@@ -57,7 +58,7 @@
static NSString *const statusCellID = @"statusCellID";
static NSString *const instructionsCellID = @"instructionsCellID";
@interface PBAddExamineViewController ()<UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate, LFImagePickerControllerDelegate>
@interface PBAddExamineViewController ()<UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate, LFImagePickerControllerDelegate, UICollectionViewDelegate, UICollectionViewDataSource>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSMutableArray<PBExamineAddModel *> *dataListM;
@property (nonatomic, strong) NSDictionary *examinDetailDic;
@@ -66,8 +67,6 @@
@property (nonatomic, strong) PBTimeChooseView *timeChooseView;
@property (nonatomic, strong) PBEditTimeView *editTimeView;
@property (nonatomic, strong) UIView *backgroundView;
@property (nonatomic, strong) UIView *typeBackView;
@property (nonatomic, strong) MSSAutoresizeLabelFlow *typeListRecordV;
@property (nonatomic, weak) UIButton *typeListBtn;
@property (nonatomic, strong) NSDictionary *typeDict;
@property (nonatomic, strong) PBCheckHeaderView *tableheaderView1;
@@ -77,6 +76,9 @@
@property (nonatomic, assign) NSInteger personIndex;
@property (nonatomic, assign) BOOL isSupervisor;//是否为监理人
@property (nonatomic, assign) BOOL isQualified;//是否状态为已合格
@property (nonatomic, strong) UICollectionView *collectionView;
@property (strong, nonatomic) LBKeyWordLayout *layout;
@property (strong, nonatomic) NSArray *items;
@end
@implementation PBAddExamineViewController
@@ -847,11 +849,6 @@
    [self hideDropDown];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
//    if ([NSStringFromClass([touch.view class]) isEqualToString:@"MSSAutoresizeLabelFlow"]) {
//        return NO;
//    } else {
//        return YES;
//    }
    if (touch.view == self.backgroundView) {
        return YES;
    } else {
@@ -864,36 +861,20 @@
        return;
    }
    [self.view addSubview:self.backgroundView];
    [self.backgroundView addSubview:self.typeBackView];
    [self.typeBackView circleViewWithRadius:6];
    [self.typeBackView addSubview:self.typeListRecordV];
    [UIView animateWithDuration:0.5 animations:^{
        self.typeBackView.frame = CGRectMake(0, 0, PBScreenWidth, 176);
        self.backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3];
    }completion:^(BOOL finished) {
//        self->_isShow = YES;
    }];
    [self.view addSubview:self.collectionView];
    self.typeListBtn.enabled = NO;
    self.navigationItem.leftBarButtonItem.enabled = NO;
}
- (void)hideDropDown{
    [UIView animateWithDuration:0.5 animations:^{
        self.typeBackView.frame = CGRectMake(0, -176, PBScreenWidth, 176);
        self.backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
    }completion:^(BOOL finished) {
        [self.backgroundView removeFromSuperview];
        [self.typeBackView removeFromSuperview];
        [self.typeListRecordV removeFromSuperview];
//        self->_isShow = NO;
    }];
    [self.collectionView removeFromSuperview];
    [self.backgroundView removeFromSuperview];
    self.typeListBtn.enabled = YES;
    self.navigationItem.leftBarButtonItem.enabled = YES;
}
- (UIView *)backgroundView {
    if (_backgroundView == nil) {
        _backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0 , 0, PBScreenWidth, self.view.height)];
        _backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
        _backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3];
        [_backgroundView setOpaque:NO];
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backTapped:)];
        tap.delegate = self;
@@ -901,30 +882,43 @@
    }
    return _backgroundView;
}
- (MSSAutoresizeLabelFlow *)typeListRecordV {
    NSMutableArray *arrM = [[NSMutableArray alloc] init];
    for (NSInteger i = 0; i < self.typeArr.count; i++) {
        NSString *str = [self.typeArr[i] valueForKey:@"aedt_name"];
        [arrM addObject:str];
- (UICollectionView *)collectionView {
    if (_collectionView == nil) {
        NSMutableArray *arrM = [[NSMutableArray alloc] init];
        for (NSInteger i = 0; i < self.typeArr.count; i++) {
            NSString *str = [self.typeArr[i] valueForKey:@"aedt_name"];
            [arrM addObject:str];
        }
        self.items = arrM.copy;
        self.layout = [[LBKeyWordLayout alloc] init];
        self.layout.estimatedItemSize = CGSizeMake(80, 30);
        self.layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, PBScreenWidth, 200) collectionViewLayout:self.layout];
        _collectionView.backgroundColor = [UIColor whiteColor];
        [_collectionView registerClass:[KeyWordCell class] forCellWithReuseIdentifier:@"KeyWordCell"];
        _collectionView.delegate = self;
        _collectionView.dataSource = self;
    }
    NSArray *array = arrM.copy;
    if (_typeListRecordV == nil) {
        _typeListRecordV = [[MSSAutoresizeLabelFlow alloc] initWithFrame:CGRectMake(0, 25, PBScreenWidth, 126) titles:array selectedHandler:^(NSUInteger index, NSString *title) {
            self.typeDict = self.typeArr[index];
            NSString *btnTitle = [NSString stringWithFormat:@"%@ ⋁",[self.typeDict valueForKey:@"aedt_name"]];
            [self.typeListBtn setTitle:btnTitle forState:UIControlStateNormal];
            [self hideDropDown];
        }];
    }
    return _typeListRecordV;
    return _collectionView;
}
- (UIView *)typeBackView {
    if (_typeBackView == nil) {
        _typeBackView = [[UIView alloc] initWithFrame:CGRectMake(0, -176, PBScreenWidth, 176)];
        _typeBackView.backgroundColor = [UIColor whiteColor];
    }
    return _typeBackView;
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.items.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    KeyWordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"KeyWordCell" forIndexPath:indexPath];
    cell.maxWidthConstraint.constant = CGRectGetWidth(collectionView.bounds) - self.layout.sectionInset.left - self.layout.sectionInset.right - cell.layoutMargins.left - cell.layoutMargins.right - 10;
    cell.textLabel.numberOfLines = 1;
    cell.textLabel.text = self.items[indexPath.row];
    return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    self.typeDict = self.typeArr[indexPath.row];
    NSString *btnTitle = [NSString stringWithFormat:@"%@ ⋁",[self.typeDict valueForKey:@"aedt_name"]];
    [self.typeListBtn setTitle:btnTitle forState:UIControlStateNormal];
    [self hideDropDown];
}
- (NSMutableArray *)selectedPhotos {
    if (_selectedPhotos == nil) {
        _selectedPhotos = [[NSMutableArray alloc] init];
IphoneBIMe/IphoneBIMe/Classes/Project/Examine/ViewControllers/PBCheckTaskViewController.m
@@ -26,20 +26,21 @@
#import "PBTimeChooseTableViewCell.h"
#import "PBPersonChooseTableViewCell.h"
#import "PBArtifactsListTableViewCell.h"
#import "MSSAutoresizeLabelFlow.h"
#import "PBRecordViewController.h"
#import "PBPersonListViewController.h"
#import "PBSelectedPersonController.h"
#import "PBEAddImageView.h"
#import "PBCheckHeaderView.h"
#import "PBVideoPlayViewController.h"
#import "LBKeyWordLayout.h"
#import "KeyWordCell.h"
static NSString *const inputCellID = @"InputCellID";
static NSString *const titleCellID = @"titleCellID";
static NSString *const timeChooseCellID = @"timeChooseCellID";
static NSString *const personCellID = @"personCellID";
static NSString *const listCellID = @"listCellID";
@interface PBCheckTaskViewController ()<UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate>
@interface PBCheckTaskViewController ()<UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate, UICollectionViewDelegate, UICollectionViewDataSource>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSMutableArray<PBExamineAddModel *> *dataListM;
@property (nonatomic, strong) NSDictionary *examinDetailDic;
@@ -51,10 +52,12 @@
@property (nonatomic, strong) NSDictionary *typeDict;
@property (nonatomic, strong) PBComponentHierarchyView *componentHierarchyView;
@property (nonatomic, strong) UIView *backgroundView;
@property (nonatomic, strong) UIView *typeBackView;
@property (nonatomic, strong) MSSAutoresizeLabelFlow *typeListRecordV;
@property (nonatomic, assign) BOOL isCheck;
@property (nonatomic, strong) PBCheckHeaderView *tableheaderView1;
@property (nonatomic, strong) UICollectionView *collectionView;
@property (strong, nonatomic) LBKeyWordLayout *layout;
@property (strong, nonatomic) NSArray *items;
@end
@implementation PBCheckTaskViewController
@@ -571,11 +574,6 @@
    [self hideDropDown];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
//    if ([NSStringFromClass([touch.view class]) isEqualToString:@"MSSAutoresizeLabelFlow"]) {
//        return NO;
//    } else {
//        return YES;
//    }
    if (touch.view == self.backgroundView) {
        return YES;
    } else {
@@ -588,36 +586,20 @@
        return;
    }
    [self.view addSubview:self.backgroundView];
    [self.backgroundView addSubview:self.typeBackView];
    [self.typeBackView circleViewWithRadius:6];
    [self.typeBackView addSubview:self.typeListRecordV];
    [UIView animateWithDuration:0.5 animations:^{
        self.typeBackView.frame = CGRectMake(0, 0, PBScreenWidth, 176);
        self.backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3];
    }completion:^(BOOL finished) {
//        self->_isShow = YES;
    }];
    [self.view addSubview:self.collectionView];
    self.typeListBtn.enabled = NO;
    self.navigationItem.leftBarButtonItem.enabled = NO;
}
- (void)hideDropDown{
    [UIView animateWithDuration:0.5 animations:^{
        self.typeBackView.frame = CGRectMake(0, -176, PBScreenWidth, 176);
        self.backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
    }completion:^(BOOL finished) {
        [self.backgroundView removeFromSuperview];
        [self.typeBackView removeFromSuperview];
        [self.typeListRecordV removeFromSuperview];
//        self->_isShow = NO;
    }];
    [self.collectionView removeFromSuperview];
    [self.backgroundView removeFromSuperview];
    self.typeListBtn.enabled = YES;
    self.navigationItem.leftBarButtonItem.enabled = YES;
}
- (UIView *)backgroundView {
    if (_backgroundView == nil) {
        _backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0 , 0, PBScreenWidth, self.view.height)];
        _backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
        _backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3];
        [_backgroundView setOpaque:NO];
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backTapped:)];
        tap.delegate = self;
@@ -625,36 +607,48 @@
    }
    return _backgroundView;
}
- (MSSAutoresizeLabelFlow *)typeListRecordV {
    NSMutableArray *arrM = [[NSMutableArray alloc] init];
    for (NSInteger i = 0; i < self.typeArr.count; i++) {
        NSString *str = [self.typeArr[i] valueForKey:@"aedt_name"];
        [arrM addObject:str];
    }
    NSArray *array = arrM.copy;
    if (_typeListRecordV == nil) {
        _typeListRecordV = [[MSSAutoresizeLabelFlow alloc] initWithFrame:CGRectMake(0, 25, PBScreenWidth, 126) titles:array selectedHandler:^(NSUInteger index, NSString *title) {
            __weak typeof(self) weakSelf = self;
            NSDictionary *typeDic = self.typeArr[index];
            NSString *guidStr = [typeDic valueForKey:@"aedt_guid"];
            NSMutableDictionary *dictM = [[NSMutableDictionary alloc] init];
            [dictM setValue:guidStr forKey:@"aedt_guid"];
            [dictM setValue:@"3" forKey:@"modify_flag"];
            PBExamineAddModel *examineAddModel = self.dataListM[8];
            examineAddModel.dataDict = typeDic;
            [weakSelf ModifyMissionInfoWithData:dictM andIndexPath:nil andOriginalData:nil];
            [self hideDropDown];
        }];
    }
    return _typeListRecordV;
- (UICollectionView *)collectionView {
    if (_collectionView == nil) {
        NSMutableArray *arrM = [[NSMutableArray alloc] init];
        for (NSInteger i = 0; i < self.typeArr.count; i++) {
            NSString *str = [self.typeArr[i] valueForKey:@"aedt_name"];
            [arrM addObject:str];
        }
        self.items = arrM.copy;
        self.layout = [[LBKeyWordLayout alloc] init];
        self.layout.estimatedItemSize = CGSizeMake(80, 30);
        self.layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, PBScreenWidth, 200) collectionViewLayout:self.layout];
        [_collectionView registerClass:[KeyWordCell class] forCellWithReuseIdentifier:@"KeyWordCell"];
        _collectionView.delegate = self;
        _collectionView.dataSource = self;
     }
    return _collectionView;
 }
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.items.count;
}
- (UIView *)typeBackView {
    if (_typeBackView == nil) {
        _typeBackView = [[UIView alloc] initWithFrame:CGRectMake(0, -176, PBScreenWidth, 176)];
        _typeBackView.backgroundColor = [UIColor whiteColor];
    }
    return _typeBackView;
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    KeyWordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"KeyWordCell" forIndexPath:indexPath];
    cell.maxWidthConstraint.constant = CGRectGetWidth(collectionView.bounds) - self.layout.sectionInset.left - self.layout.sectionInset.right - cell.layoutMargins.left - cell.layoutMargins.right - 10;
    cell.textLabel.numberOfLines = 1;
    cell.textLabel.text = self.items[indexPath.row];
    return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    __weak typeof(self) weakSelf = self;
    NSDictionary *typeDic = self.typeArr[indexPath.row];
    NSString *guidStr = [typeDic valueForKey:@"aedt_guid"];
    NSMutableDictionary *dictM = [[NSMutableDictionary alloc] init];
    [dictM setValue:guidStr forKey:@"aedt_guid"];
    [dictM setValue:@"3" forKey:@"modify_flag"];
    PBExamineAddModel *examineAddModel = self.dataListM[8];
    examineAddModel.dataDict = typeDic;
    [weakSelf ModifyMissionInfoWithData:dictM andIndexPath:nil andOriginalData:nil];
    [self hideDropDown];
}
/*
#pragma mark - Navigation
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/KeyWordCell.h
New file
@@ -0,0 +1,18 @@
//
//  KeyWordCell.h
//  IphoneBIMe
//
//  Created by ZhangJF on 2023/3/9.
//  Copyright © 2023 ProBIM. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface KeyWordCell : UICollectionViewCell
@property (weak, nonatomic) UILabel *textLabel;
@property (weak, nonatomic) NSLayoutConstraint *maxWidthConstraint;
@end
NS_ASSUME_NONNULL_END
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/KeyWordCell.m
New file
@@ -0,0 +1,38 @@
//
//  KeyWordCell.m
//  IphoneBIMe
//
//  Created by ZhangJF on 2023/3/9.
//  Copyright © 2023 ProBIM. All rights reserved.
//
#import "KeyWordCell.h"
@implementation KeyWordCell
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self setupUI];
    }
    return self;
}
- (void)setupUI {
    self.backgroundColor = [UIColor colorWithRed:229 / 255.0 green:239 / 255.0 blue:250 / 255.0 alpha:1.0];
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:14];
    label.textColor = [UIColor colorWithRed:0 / 255.0 green:122 / 255.0 blue:255 / 255.0 alpha:1.0];
    self.textLabel = label;
    [self.contentView addSubview:self.textLabel];
    [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.contentView).offset(5);
        make.bottom.equalTo(self.contentView).offset(-5);
        make.left.equalTo(self.contentView).offset(10);
        make.right.equalTo(self.contentView).offset(-10);
    }];
}
- (void)layoutSubviews
{
    [super layoutSubviews];
    self.layer.cornerRadius = 6.0f;
}
@end
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/LBKeyWordLayout.h
New file
@@ -0,0 +1,13 @@
//
//  LBKeyWordLayout.h
//  IphoneBIMe
//
//  Created by ZhangJF on 2023/3/9.
//  Copyright © 2023 ProBIM. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface LBKeyWordLayout : UICollectionViewFlowLayout
@end
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/AutoCollectView/LBKeyWordLayout.m
New file
@@ -0,0 +1,151 @@
//
//  LBKeyWordLayout.m
//  IphoneBIMe
//
//  Created by ZhangJF on 2023/3/9.
//  Copyright © 2023 ProBIM. All rights reserved.
//
#import "LBKeyWordLayout.h"
@interface LBKeyWordLayout()
@property (strong, nonatomic) NSCache *cache;
@end
@implementation LBKeyWordLayout
- (void)prepareLayout
{
    [super prepareLayout];
    self.cache = [NSCache new];
}
- (void)invalidateLayout
{
    [super invalidateLayout];
    self.cache = [NSCache new];
}
- (BOOL)shouldInvalidateLayoutForPreferredLayoutAttributes:(UICollectionViewLayoutAttributes *)preferredAttributes withOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributes
{
    return YES;
}
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    return YES;
}
- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSArray<UICollectionViewLayoutAttributes *> *attributes = [super layoutAttributesForElementsInRect:rect].copy;
    return [self layoutAttributesForElements:attributes];
}
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return [self attributesAtIndexPath:indexPath];
}
#pragma mark - Private
- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElements:(NSArray<UICollectionViewLayoutAttributes *> *)attributes
{
    NSMutableArray<UICollectionViewLayoutAttributes *> *alignedAttributes = [NSMutableArray new];
    for (UICollectionViewLayoutAttributes *item in attributes) {
        if(item.representedElementKind != nil) {
            [alignedAttributes addObject:item];
        } else {
            [alignedAttributes addObject:[self layoutAttributesForItem:item atIndexPath:item.indexPath]];
        }
    }
    return alignedAttributes.copy;
}
- (UICollectionViewLayoutAttributes *)layoutAttributesForItem:(UICollectionViewLayoutAttributes *)attributes atIndexPath:(NSIndexPath *)indexPath
{
    return [self attributes:attributes atIndexPath:indexPath];
}
- (UICollectionViewLayoutAttributes *)attributesAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:indexPath].copy;
    return [self attributes:attributes atIndexPath:indexPath];
}
- (UICollectionViewLayoutAttributes *)attributes:(UICollectionViewLayoutAttributes *)attributes atIndexPath:(NSIndexPath *)indexPath
{
    if ([self.cache objectForKey:indexPath]) {
        return [self.cache objectForKey:indexPath];
    }
    NSMutableArray *itemsInRow = [NSMutableArray array];
    const NSInteger totalInSection = [self.collectionView numberOfItemsInSection:indexPath.section];
    const CGFloat width = CGRectGetWidth(self.collectionView.bounds);
    const CGRect rowFrame = CGRectMake(0, CGRectGetMinY(attributes.frame), width, CGRectGetHeight(attributes.frame));
    // Go forward to the end or the row or section items
    NSInteger index = indexPath.row;
    while(index++ < totalInSection - 1) {
        UICollectionViewLayoutAttributes *next = [super layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForItem:index
                                                                                                               inSection:indexPath.section]].copy;
        if (!CGRectIntersectsRect(next.frame, rowFrame)) {
            break;
        }
        [itemsInRow addObject:next];
    }
    // Current item
    [itemsInRow addObject:attributes];
    // Go backward to the start of the row or first item
    index = indexPath.row;
    while (index-- > 0) {
        UICollectionViewLayoutAttributes *prev = [super layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForItem:index
                                                                                                               inSection:indexPath.section]].copy;
        if (!CGRectIntersectsRect(prev.frame, rowFrame)) {
            break;
        }
        [itemsInRow addObject:prev];
    }
    // Total items width include spacings
    CGFloat totalWidth = self.minimumInteritemSpacing * (itemsInRow.count - 1);
    for (UICollectionViewLayoutAttributes *item in itemsInRow) {
        totalWidth += CGRectGetWidth(item.frame);
    }
    // Correct sorting in row
    [itemsInRow sortUsingComparator:^NSComparisonResult(UICollectionViewLayoutAttributes *obj1, UICollectionViewLayoutAttributes *obj2) {
        return obj1.indexPath.row > obj2.indexPath.row;
    }];
    CGRect rect = CGRectZero;
    for (UICollectionViewLayoutAttributes *item in itemsInRow) {
        CGRect frame = item.frame;
        CGFloat x = frame.origin.x;
        if (CGRectIsEmpty(rect)) {
           x = self.sectionInset.left;
        } else {
           x = CGRectGetMaxX(rect) + self.minimumInteritemSpacing;
        }
        frame.origin.x = x;
        item.frame = frame;
        rect = frame;
        [self.cache setObject:item forKey:item.indexPath];
    }
    [self.cache setObject:attributes forKey:indexPath];
    return attributes;
}
@end
IphoneBIMe/IphoneBIMe/Classes/ProjectList/Views/PBProjectSearchView.m
@@ -7,15 +7,18 @@
//
#import "PBProjectSearchView.h"
#import "MSSAutoresizeLabelFlow.h"
#import "PBProjectTableViewCell.h"
#import "PBProjectModel.h"
#import "PBTabBarController.h"
@interface PBProjectSearchView()<UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate>
@property(nonatomic,strong)MSSAutoresizeLabelFlow *historicalRecordV;
#import "LBKeyWordLayout.h"
#import "KeyWordCell.h"
@interface PBProjectSearchView()<UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate, UICollectionViewDelegate, UICollectionViewDataSource>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSArray *dataList;
@property (nonatomic, weak) UISearchBar *searchBar;
@property (nonatomic, strong) UICollectionView *collectionView;
@property (strong, nonatomic) LBKeyWordLayout *layout;
@property (strong, nonatomic) NSArray *items;
@end
@implementation PBProjectSearchView
- (instancetype)initWithFrame:(CGRect)frame {
@@ -87,13 +90,21 @@
        make.right.equalTo(self).offset(-18);
        make.size.mas_equalTo(CGSizeMake(24, 24));
    }];
    NSArray *array = [self readSearchHistory];
    _historicalRecordV = [[MSSAutoresizeLabelFlow alloc] initWithFrame:CGRectMake(0, 150, PBScreenWidth, 200) titles:array selectedHandler:^(NSUInteger index, NSString *title) {
        NSLog(@"%@",title);
        self.searchBar.text = title;
        [self searchActionWithTitle:title];
    }];
    [self addSubview:_historicalRecordV];
    self.items = [self readSearchHistory];
//    _historicalRecordV = [[MSSAutoresizeLabelFlow alloc] initWithFrame:CGRectMake(0, 150, PBScreenWidth, 200) titles:array selectedHandler:^(NSUInteger index, NSString *title) {
//        NSLog(@"%@",title);
//        self.searchBar.text = title;
//        [self searchActionWithTitle:title];
//    }];
    self.layout = [[LBKeyWordLayout alloc] init];
    self.layout.estimatedItemSize = CGSizeMake(80, 30);
    self.layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
    self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 150, PBScreenWidth, 400) collectionViewLayout:self.layout];
    self.collectionView.backgroundColor = [UIColor whiteColor];
    [self.collectionView registerClass:[KeyWordCell class] forCellWithReuseIdentifier:@"KeyWordCell"];
    self.collectionView.delegate = self;
    self.collectionView.dataSource = self;
    [self addSubview:self.collectionView];
    [self addSubview:self.tableView];
    self.tableView.hidden = YES;
}
@@ -110,7 +121,8 @@
    }
    [arrM insertObject:title atIndex:0];
    [self writeSearchHistoryWithData:arrM.copy];
    [self.historicalRecordV reloadAllWithTitles:arrM.copy];
    self.items = arrM.copy;
    [self.collectionView reloadData];
}
- (void)backActon {
    if (self.cancelSearchBlock) {
@@ -219,7 +231,8 @@
    NSString *documentPath = [documents stringByAppendingPathComponent:@"searchHistory.plist"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    [fileManager removeItemAtPath:documentPath error:nil];
    [self.historicalRecordV reloadAllWithTitles:@[]];
    self.items = @[];
    [self.collectionView reloadData];
}
#pragma mark - 插入本地历史记录
- (void)writeSearchHistoryWithData:(NSArray *)history {
@@ -228,6 +241,23 @@
    NSString *documentPath = [documents stringByAppendingPathComponent:@"searchHistory.plist"];
    [history writeToFile:documentPath atomically:YES];
}
#pragma mark - UICollectionView
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.items.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    KeyWordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"KeyWordCell" forIndexPath:indexPath];
    cell.maxWidthConstraint.constant = CGRectGetWidth(collectionView.bounds) - self.layout.sectionInset.left - self.layout.sectionInset.right - cell.layoutMargins.left - cell.layoutMargins.right - 10;
    cell.textLabel.numberOfLines = 1;
    cell.textLabel.text = self.items[indexPath.row];
    return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    self.searchBar.text = self.items[indexPath.row];
    [self searchActionWithTitle:self.items[indexPath.row]];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.