// // PBOpenViewPointController.m // IphoneBIMe // // Created by zjf on 2019/1/16. // Copyright © 2019 ProBIM. All rights reserved. // #import "PBOpenViewPointController.h" #import "PBProjectModel.h" #import "PBModelsModel.h" #import "PBViewPointModel.h" #import "PBViewPointDetailCell.h" #import "PBLoadModelDisplayController.h" #import "PBImageShowViewController.h" @interface PBOpenViewPointController () @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSMutableArray *dataList; @property (nonatomic, weak) UIImageView *viewPointImageV; @property (nonatomic, strong) UIImage *image; @end @implementation PBOpenViewPointController - (void)viewDidLoad { [super viewDidLoad]; [self setupNav]; [self setupUI]; } - (void)setupNav { PBBackNavItem *backNav = [PBBackNavItem backNacItem]; backNav.title = @" "; [backNav addTarget:self action:@selector(backItemAction) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithCustomView:backNav]; self.navigationItem.leftBarButtonItem = backNavItem; } - (void)backItemAction { [self.navigationController popViewControllerAnimated:YES]; } - (void)setupUI { self.title = self.viewPointModel.Name; self.view.backgroundColor = [UIColor whiteColor]; self.tableView = [[UITableView alloc] init]; self.tableView.bounces = NO; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.estimatedRowHeight = 180; self.tableView.dataSource = self; self.tableView.delegate = self; [self.view addSubview:self.tableView]; CGFloat height; if (IS_IPHONE_X) { height = 110.0f; }else { height = 76.0f; } [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.equalTo(self.view); make.bottom.equalTo(self.view).offset(-(height)); }]; self.tableView.tableHeaderView = [self tableHeadViewWithImage:self.image]; NSString * btnText = [self.viewPointModel.Type isEqualToString:@"0"] ? @"加载视点" : @"加载批注"; UIButton *loadViewPointBtn = [UIButton z_textButton:btnText boldFontSize:18 normalColor:[UIColor whiteColor]]; [loadViewPointBtn addTarget:self action:@selector(LoadModelDisplayVC) forControlEvents:UIControlEventTouchUpInside]; [loadViewPointBtn setBackgroundImage:[UIImage imageNamed:@"Model_loadViewPointBtn_bg"] forState:UIControlStateNormal]; [self.view addSubview:loadViewPointBtn]; [loadViewPointBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.tableView.mas_bottom).offset(10); make.left.equalTo(self.view).offset(16); make.right.equalTo(self.view).offset(-16); make.height.equalTo(@50); }]; } - (void)LoadModelDisplayVC { PBLoadModelDisplayController *modelDisplayVC = [[PBLoadModelDisplayController alloc] init]; modelDisplayVC.projectModel = _projectModel; modelDisplayVC.modelID = _modelsModel.ID; modelDisplayVC.viewID = _viewPointModel.ViewID; modelDisplayVC.viewPointID = _viewPointModel.ID; [self.navigationController pushViewController:modelDisplayVC animated:YES]; } - (UIView *)tableHeadViewWithImage:(UIImage *)image { NSInteger imageW = image.size.width; NSInteger imageH = image.size.height; CGFloat scale = (CGFloat)self.view.width / (CGFloat)imageW; imageH = imageH *scale; UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, imageH)]; UIImageView *imageV = [[UIImageView alloc] initWithImage:image]; [bgView addSubview:imageV]; [imageV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.left.right.equalTo(bgView); }]; imageV.userInteractionEnabled = YES; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)]; [imageV addGestureRecognizer:tap]; self.viewPointImageV = imageV; return bgView; } - (void)tapAction { PBImageShowViewController *imageShowVC = [[PBImageShowViewController alloc] init]; imageShowVC.image = self.image; imageShowVC.modalPresentationStyle = UIModalPresentationFullScreen; [self presentViewController:imageShowVC animated:NO completion:nil]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataList.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { PBViewPointDetailCell *cell = [PBViewPointDetailCell new]; cell.viewPointModel = self.dataList[indexPath.row]; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } - (void)setProjectModel:(PBProjectModel *)projectModel { _projectModel = projectModel; } - (void)setViewPointModel:(PBViewPointModel *)viewPointModel { _viewPointModel = viewPointModel; [self.dataList addObject:viewPointModel]; if (viewPointModel.Links.count == 0) { self.image = [UIImage imageNamed:@"Model_viewPoint_ failureImage"]; }else { NSString *thumbnail = [viewPointModel.Links[0] valueForKey:@"Content"]; NSRange range = [thumbnail rangeOfString:@"base64,"]; thumbnail = [thumbnail substringFromIndex:range.location + range.length]; self.image = [NSString imageDecoding:thumbnail]; } } - (void)setModelsModel:(PBModelsModel *)modelsModel { _modelsModel = modelsModel; } - (NSMutableArray *)dataList { if (_dataList == nil) { _dataList = [[NSMutableArray alloc] init]; } return _dataList; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end