// // CPDFAddViewController.m // PDFViewer // // Created by kdanmobile_2 on 2022/12/15. // #import "CPDFAddViewController.h" #import #import #import "CPDFViewController.h" #import "CPDFTextView.h" #import "CPDFTextPreview.h" #import "CPDFImageView.h" #import "CPDFImagePreview.h" #import "CPDFDataModel.h" #import "CPDFEditView.h" #import "Masonry.h" @interface CPDFAddViewController () @property (nonatomic,assign) CGSize imageSize; @property (nonatomic,strong) UIImage *image; @property (nonatomic,strong) CPDFDataModel *dataModel; @property (nonatomic,strong) CPDFEditView *editView; @property (nonatomic,strong) NSMutableArray *dataArray; @end @implementation CPDFAddViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(onClickedDoneBtn)]; UIBarButtonItem *editBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editClick)]; UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelClick)]; self.navigationItem.rightBarButtonItems = @[doneBtn,editBtn,cancelBtn]; [self createView]; [self addConstraint]; } #pragma mark - Initializers - (instancetype)initWithImage:(UIImage *)image withDocument:(CPDFDocument *)document{ self = [super init]; if (self) { _image = image; _imageSize = image.size; _document = document; } return self; } - (void)createView { NSArray *segmentArray = @[@"Text",@"Image"]; _segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentArray]; [_segmentedControl addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged]; _segmentedControl.selectedSegmentIndex = 0; [_segmentedControl setBackgroundColor:[UIColor whiteColor]]; _textViewController = [[CPDFTextViewController alloc] init]; _imageViewController = [[CPDFImageViewController alloc] init]; [self addChildViewController:_textViewController]; [self addChildViewController:_imageViewController]; [self.view addSubview:self.segmentedControl]; [self.view addSubview:_textViewController.view]; [self.view addSubview:_imageViewController.view]; _editView = [[CPDFEditView alloc] init]; _editView.editTableView.dataSource = self; _editView.editTableView.delegate = self; [self.view addSubview:_editView]; _textViewController.textPreview.documentView.image = self.image; _imageViewController.imagePreview.documentView.image = self.image; _imageViewController.view.hidden = YES; } - (void)addConstraint { if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationPortraitUpsideDown) { [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view.mas_top).offset(43.6); make.width.equalTo(self.view.mas_width); make.height.equalTo(@(self.view.bounds.size.height / 13)); }]; [_textViewController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_segmentedControl.mas_bottom).offset(0); make.width.equalTo(_segmentedControl.mas_width); make.bottom.equalTo(self.view).offset(-34); }]; [_imageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_segmentedControl.mas_bottom).offset(0); make.width.equalTo(_segmentedControl.mas_width); make.bottom.equalTo(self.view).offset(-34); }]; [_textViewController.textView mas_remakeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self.view.mas_right).offset(-38); make.height.equalTo(@205); make.width.equalTo(@393); make.bottom.equalTo(self.view.mas_bottom).offset(-74); }]; [_textViewController.textPreview mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.segmentedControl.mas_bottom).offset(10); make.right.equalTo(_textViewController.textView.mas_left).offset(-5); make.left.equalTo(self.view.mas_left).offset(0); make.bottom.equalTo(self.view.mas_bottom).offset(-34); }]; [_imageViewController.imageView mas_remakeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self.view.mas_right).offset(-38); make.height.equalTo(@205); make.width.equalTo(@393); make.bottom.equalTo(self.view.mas_bottom).offset(-74); }]; [_imageViewController.imagePreview mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.segmentedControl.mas_bottom).offset(10); make.right.equalTo(_imageViewController.imageView.mas_left).offset(-5); make.left.equalTo(self.view.mas_left).offset(0); make.bottom.equalTo(self.view.mas_bottom).offset(-34); }]; [_textViewController.textPreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_textViewController.textPreview.mas_centerX); make.centerY.equalTo(_textViewController.textPreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 10)); make.height.equalTo(@(_imageSize.height / 10)); }]; [_imageViewController.imagePreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX); make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 10)); make.height.equalTo(@(_imageSize.height / 10)); }]; } else { [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view.mas_top).offset(83.6); make.width.equalTo(self.view.mas_width); make.height.equalTo(@(self.view.bounds.size.height / 20)); }]; [_textViewController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_segmentedControl.mas_bottom).offset(0); make.width.equalTo(_segmentedControl.mas_width); make.bottom.equalTo(self.view).offset(-34); }]; [_imageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_segmentedControl.mas_bottom).offset(0); make.width.equalTo(_segmentedControl.mas_width); make.bottom.equalTo(self.view).offset(-34); }]; [_textViewController.textPreview.documentView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_textViewController.textPreview.mas_centerX); make.centerY.equalTo(_textViewController.textPreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 8)); make.height.equalTo(@(_imageSize.height / 8)); }]; [_imageViewController.imagePreview.documentView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX); make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 8)); make.height.equalTo(@(_imageSize.height / 8)); }]; } } #pragma mark - Accessors - (NSArray *)dataArray { if (!_dataArray) { _dataArray = [NSMutableArray array]; CPDFWatermark *dataWater = [[CPDFWatermark alloc] init]; NSArray *waterArray = [_document watermarks]; for (NSInteger i = 0; i < waterArray.count; i++) { CPDFDataModel *dataModel = [[CPDFDataModel alloc] init]; dataWater = waterArray[i]; dataModel.text = dataWater.text; dataModel.textColor = dataWater.textColor; dataModel.watermarkScale = dataWater.scale; dataModel.watermarkOpacity = dataWater.opacity; dataModel.watermarkRotation = dataWater.rotation; [_dataArray addObject:dataModel]; } } return _dataArray; } #pragma mark - UITableViewDataSource - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *path = @"AddWater"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:path]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:path]; } cell.textLabel.text = [self.dataArray[indexPath.row] text]; return cell; } #pragma mark - Actons - (void)onClickedDoneBtn { self.navigationItem.rightBarButtonItem = nil; if (_segmentedControl.selectedSegmentIndex == 0) { _dataModel = self.textViewController.dataModel; [self.delegate changeTextModel:self.dataModel]; } else { _dataModel = self.imageViewController.dataModel; [self.delegate changeImageModel:self.dataModel]; } [self.navigationController popViewControllerAnimated:YES]; } - (void)segmentedAction:(UISegmentedControl *)sender { switch(sender.selectedSegmentIndex) { case 0: _textViewController.view.hidden = NO; _imageViewController.view.hidden = YES; break; case 1: _textViewController.view.hidden = YES; _imageViewController.view.hidden = NO; break; default: break; } } - (void)editClick { if (self.editView.center.x < 50) { [_editView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.view.mas_left); make.top.equalTo(self.textViewController.textPreview.mas_top); make.bottom.equalTo(self.textViewController.textPreview.mas_bottom); make.width.mas_equalTo(150); }]; [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ self.editView.center = CGPointMake(self.editView.center.x + 150, self.editView.center.y); } completion:nil]; } } - (void)cancelClick { if (self.editView.center.x > 0) { [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ self.editView.center = CGPointMake(self.editView.center.x - 150, self.editView.center.y); } completion:nil]; } } #pragma mark - Orientation - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) { [_segmentedControl mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view.mas_top).offset(43.6); make.width.equalTo(self.view.mas_width); make.height.equalTo(@(self.view.bounds.size.height / 24)); }]; if (_imageSize.width > _imageSize.height) { [_textViewController.textPreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_textViewController.textPreview.mas_centerX); make.centerY.equalTo(_textViewController.textPreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 8)); make.height.equalTo(@(_imageSize.height / 8)); }]; [_imageViewController.imagePreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX); make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 8)); make.height.equalTo(@(_imageSize.height / 8)); }]; } else { [_textViewController.textPreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_textViewController.textPreview.mas_centerX); make.centerY.equalTo(_textViewController.textPreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 10)); make.height.equalTo(@(_imageSize.height / 10)); }]; [_imageViewController.imagePreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX); make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 10)); make.height.equalTo(@(_imageSize.height / 10)); }]; } } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait) { [_segmentedControl mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view.mas_top).offset(83.6); make.width.equalTo(self.view.mas_width); make.height.equalTo(@(852 / 20)); }]; [_textViewController.textPreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_textViewController.textPreview.mas_centerX); make.centerY.equalTo(_textViewController.textPreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 8)); make.height.equalTo(@(_imageSize.height / 8)); }]; [_imageViewController.imagePreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX); make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY); make.width.equalTo(@(_imageSize.width / 8)); make.height.equalTo(@(_imageSize.height / 8)); }]; } } @end