CPDFHeaderFooterAddController.m 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. //
  2. // HeaderFooterAlertViewController.m
  3. // PDFViewer
  4. //
  5. // Created by kdanmobile_2 on 2022/11/16.
  6. //
  7. #import "CPDFHeaderFooterAddController.h"
  8. @interface CPDFHeaderFooterAddController ()
  9. @end
  10. @implementation CPDFHeaderFooterAddController
  11. - (id)initWithIamge:(UIImage *)image WithSize:(CGSize)size WithDocument:(CPDFDocument *)docment WithView:(CPDFView *) pdfView {
  12. self = [super init];
  13. if (self) {
  14. _image = image;
  15. _size = size;
  16. _document = docment;
  17. _pdfView = pdfView;
  18. }
  19. return self;
  20. }
  21. - (void)viewDidLoad {
  22. [super viewDidLoad];
  23. // Do any additional setup after loading the view.
  24. //setting navigation
  25. self.navigationItem.title = @"Add Page NUmber";
  26. self.navigationController.toolbarHidden = YES;
  27. self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneClick:)];
  28. self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelClick:)];
  29. //initialize page format
  30. //initialize model
  31. _modelData = [[CPDFHeaderFooterModel alloc] init];
  32. //add page image
  33. _headerFooterview = [[CPDFHeaderFooterAddView alloc] init];
  34. _imageView = [[UIImageView alloc] init];
  35. _imageView.image = self.image;
  36. CALayer *layer = [_imageView layer];
  37. layer.borderColor = [[UIColor blackColor] CGColor];
  38. layer.borderWidth = 1.0f;
  39. [self.view addSubview:_imageView];
  40. [self.view addSubview:_headerFooterview];
  41. [_imageView mas_makeConstraints:^(MASConstraintMaker *make) {
  42. make.top.equalTo(self.view.mas_top).offset(125);
  43. make.left.equalTo(self.view.mas_left).offset((393/2)-(self.size.width/6));
  44. make.width.mas_equalTo(self.size.width/3);
  45. make.height.mas_equalTo(self.size.height/3);
  46. }];
  47. //add view
  48. [self.headerFooterview mas_makeConstraints:^(MASConstraintMaker *make) {
  49. make.top.equalTo(self.imageView.mas_bottom).offset(60);
  50. make.left.equalTo(self.view.mas_left);
  51. make.width.mas_equalTo(self.view.frame.size.width);
  52. make.height.mas_equalTo(self.view.frame.size.height);
  53. }];
  54. [_headerFooterview.localSegment addTarget:self action:@selector(changeLocation:) forControlEvents:UIControlEventValueChanged];
  55. [_headerFooterview.aligbmentSegment addTarget:self action:@selector(changeAligbment:) forControlEvents:UIControlEventValueChanged];
  56. [_headerFooterview.colorSlider addTarget:self action:@selector(sliderChange:) forControlEvents:UIControlEventValueChanged];
  57. [_headerFooterview.fontSizeText addTarget:self action:@selector(changeFontSize:) forControlEvents:UIControlEventEditingChanged];
  58. [_headerFooterview.pageIndexNumberText addTarget:self action:@selector(changePageStart:) forControlEvents:UIControlEventEditingChanged];
  59. //[_headerFooterview.pageNumberText addTarget:self action:@selector(changeTableView:) forControlEvents:UIControlEventEditingDidBegin];
  60. [_headerFooterview.pageNumberText addTarget:self action:@selector(changeText:) forControlEvents:UIControlEventEditingChanged];
  61. }
  62. //tableView initialize
  63. - (NSArray *)dataArray {
  64. if (!_dataArray) {
  65. _dataArray = [NSMutableArray array];
  66. CPDFPageFomatModel *model1 = [[CPDFPageFomatModel alloc] init];
  67. model1.pageFormat = @"1";
  68. CPDFPageFomatModel *model2 = [[CPDFPageFomatModel alloc] init];
  69. model2.pageFormat = @"number";
  70. [_dataArray addObject:model1];
  71. [_dataArray addObject:model2];
  72. }
  73. return _dataArray;
  74. }
  75. - (void)changeTableView:(UITextField *)text {
  76. _pageFormat = [[CPDFHeaderFooterTextTableView alloc] init];
  77. _pageFormat.tableView.delegate = self;
  78. _pageFormat.tableView.dataSource = self;
  79. //self.pageFormat.frame = CGRectMake(100, 300, 100, 150);
  80. [self.headerFooterview addSubview:self.pageFormat];
  81. [self.view bringSubviewToFront:self.pageFormat];
  82. [_pageFormat mas_makeConstraints:^(MASConstraintMaker *make) {
  83. make.top.equalTo(self.headerFooterview.mas_top).offset(50);
  84. make.left.equalTo(self.headerFooterview.mas_left).offset(50);
  85. make.width.mas_equalTo(200);
  86. make.height.mas_equalTo(250);
  87. }];
  88. [self.pageFormat.okBtn addTarget:self action:@selector(pageFormatOk:) forControlEvents:UIControlEventTouchUpInside];
  89. }
  90. - (void)pageFormatOk:(UIButton *)okBtn {
  91. [self.pageFormat removeFromSuperview];
  92. }
  93. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  94. return self.dataArray.count;
  95. }
  96. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  97. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"pageFormat"];
  98. if (cell == nil) {
  99. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"pageFormat"];
  100. }
  101. cell.textLabel.text = [self.dataArray[indexPath.row] pageFormat];
  102. return cell;
  103. }
  104. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  105. self.headerFooterview.pageNumberText.text = [self.dataArray[indexPath.row] pageFormat];
  106. }
  107. //candel button enable
  108. - (void)cancelClick:(UIBarButtonItem *)btn {
  109. [self.navigationController popViewControllerAnimated:YES];
  110. }
  111. //done button enable
  112. - (void)doneClick:(UIBarButtonItem *)btn {
  113. NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:self.modelData,@"model", nil];
  114. NSNotification *notification = [NSNotification notificationWithName:@"getAddHeaderFooterModel" object:nil userInfo:dict];
  115. [[NSNotificationCenter defaultCenter] postNotification:notification];
  116. [self.navigationController popViewControllerAnimated:YES];
  117. }
  118. //get page text for HeaderFooterModel
  119. - (void)changeText:(UITextField *)text {
  120. self.showLabel.text = text.text;
  121. self.modelData.fontText = text.text;
  122. }
  123. //get page start for HeaderFooterModel
  124. - (void)changePageStart:(UITextField *)text {
  125. int start = [text.text intValue];
  126. self.modelData.pageStart = [NSString stringWithFormat:@"%d",start - 1];
  127. }
  128. - (void)changeFontSize:(UITextField *)text {
  129. float size = [text.text floatValue];
  130. _showLabel.font = [UIFont systemFontOfSize:size / 3];
  131. _modelData.fontSize = size;
  132. }
  133. //slider select color
  134. - (void)sliderChange:(UISlider *)slider {
  135. switch ((int)slider.value/10) {
  136. case 0:
  137. self.showLabel.textColor = [UIColor redColor];
  138. self.modelData.fontColor = [UIColor redColor];
  139. break;
  140. case 1:
  141. self.showLabel.textColor = [UIColor orangeColor];
  142. self.modelData.fontColor = [UIColor orangeColor];
  143. break;
  144. case 2:
  145. self.showLabel.textColor = [UIColor colorWithRed:239.0/255 green:140.0/255 blue:133.0/255 alpha:1];
  146. self.modelData.fontColor = [UIColor colorWithRed:239.0/255 green:140.0/255 blue:133.0/255 alpha:1];
  147. break;
  148. case 3:
  149. self.showLabel.textColor = [UIColor yellowColor];
  150. self.modelData.fontColor = [UIColor yellowColor];;
  151. break;
  152. case 4:
  153. self.showLabel.textColor = [UIColor greenColor];
  154. self.modelData.fontColor = [UIColor greenColor];
  155. break;
  156. case 5:
  157. self.showLabel.textColor = [UIColor blueColor];
  158. self.modelData.fontColor = [UIColor blueColor];
  159. break;
  160. case 6:
  161. self.showLabel.textColor = [UIColor purpleColor];
  162. self.modelData.fontColor = [UIColor purpleColor];
  163. break;
  164. case 7:
  165. self.showLabel.textColor = [UIColor colorWithRed:235.0/255 green:61.0/255 blue:133.0/255 alpha:1];
  166. self.modelData.fontColor = [UIColor colorWithRed:235.0/255 green:61.0/255 blue:133.0/255 alpha:1];
  167. break;
  168. case 8:
  169. self.showLabel.textColor = [UIColor blackColor];
  170. self.modelData.fontColor = [UIColor blackColor];
  171. break;
  172. case 9:
  173. self.showLabel.textColor = [UIColor whiteColor];
  174. self.modelData.fontColor = [UIColor whiteColor];
  175. break;
  176. default:
  177. break;
  178. }
  179. }
  180. //select headerfooter
  181. - (void)changeLocation:(UISegmentedControl *)sender {
  182. if (sender.selectedSegmentIndex == 0) {
  183. _position.location = kHeader;
  184. } else {
  185. _position.location = kFooter;
  186. }
  187. [self showPages];
  188. }
  189. //select aligment
  190. - (void)changeAligbment:(UISegmentedControl *)sender {
  191. if (sender.selectedSegmentIndex == 0) {
  192. _position.aligment = kLeft;
  193. } else if (sender.selectedSegmentIndex == 1) {
  194. _position.aligment = kCenter;
  195. } else {
  196. _position.aligment = kRinght;
  197. }
  198. [self showPages];
  199. }
  200. //show headerfooter and aligment
  201. - (void)showPages {
  202. if (_showLabel == nil) {
  203. _showLabel = [[UILabel alloc] init];
  204. }
  205. [_showLabel setText:@"1"];
  206. _showLabel.font = [UIFont systemFontOfSize:6];
  207. [self.imageView addSubview:self.showLabel];
  208. switch (self.position.location) {
  209. case kHeader:
  210. if (self.position.aligment == kLeft) {
  211. [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  212. make.top.equalTo(_imageView.mas_top).offset(0.5);
  213. make.left.equalTo(self.imageView.mas_left).offset(0.5);
  214. make.height.mas_equalTo(10);
  215. make.width.mas_equalTo(10);
  216. }];
  217. self.modelData.fontPosition = 0;
  218. } else if (self.position.aligment == kCenter) {
  219. [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  220. make.top.equalTo(_imageView.mas_top).offset(0.5);
  221. make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 6);
  222. make.height.mas_equalTo(10);
  223. make.width.mas_equalTo(10);
  224. }];
  225. self.modelData.fontPosition = 1;
  226. } else {
  227. [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  228. make.top.equalTo(self.imageView.mas_top).offset(0.5);
  229. make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 3 - 12);
  230. make.height.mas_equalTo(10);
  231. make.width.mas_equalTo(10);
  232. }];
  233. self.modelData.fontPosition = 2;
  234. }
  235. break;
  236. case kFooter:
  237. if (self.position.aligment == kLeft) {
  238. [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  239. make.top.equalTo(self.imageView.mas_top).offset(self.size.height / 3 - 12);
  240. make.left.equalTo(self.imageView.mas_left).offset(0.5);
  241. make.height.mas_equalTo(10);
  242. make.width.mas_equalTo(10);
  243. }];
  244. self.modelData.fontPosition = 3;
  245. } else if (self.position.aligment == kCenter) {
  246. [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  247. make.top.equalTo(self.imageView.mas_top).offset(self.size.height / 3 - 12);
  248. make.left.equalTo(self.imageView.mas_left).offset(self.size.width/6);
  249. make.height.mas_equalTo(10);
  250. make.width.mas_equalTo(10);
  251. }];
  252. self.modelData.fontPosition = 4;
  253. } else {
  254. [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  255. make.top.equalTo(self.imageView.mas_top).offset(self.size.height / 3 - 12);
  256. make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 3 - 12);
  257. make.height.mas_equalTo(10);
  258. make.width.mas_equalTo(10);
  259. }];
  260. self.modelData.fontPosition = 5;
  261. }
  262. break;
  263. default:
  264. break;
  265. }
  266. }
  267. //when orientation
  268. - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
  269. if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
  270. [_imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
  271. make.top.equalTo(self.view.mas_top).offset((393/2)-(self.size.height/6));
  272. make.left.equalTo(self.view.mas_left).offset((393/2)-(self.size.width/6));
  273. make.width.mas_equalTo(self.size.width/3);
  274. make.height.mas_equalTo(self.size.height/3);
  275. }];
  276. //add view
  277. [self.headerFooterview mas_remakeConstraints:^(MASConstraintMaker *make) {
  278. make.top.equalTo(self.view.mas_top).offset(15);
  279. make.left.equalTo(self.view.mas_left).offset(self.view.frame.size.width / 2 + 200);
  280. make.width.mas_equalTo(393);
  281. make.height.mas_equalTo(self.view.frame.size.height - 20);
  282. }];
  283. } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait) {
  284. [_imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
  285. make.top.equalTo(self.view.mas_top).offset(125);
  286. make.left.equalTo(self.view.mas_left).offset((393 / 2)-(self.size.width / 6));
  287. make.width.mas_equalTo(self.size.width / 3);
  288. make.height.mas_equalTo(self.size.height / 3);
  289. }];
  290. //add view
  291. [self.headerFooterview mas_remakeConstraints:^(MASConstraintMaker *make) {
  292. make.top.equalTo(self.imageView.mas_bottom).offset(60);
  293. make.left.equalTo(self.view.mas_left);
  294. make.width.mas_equalTo(self.view.frame.size.width);
  295. make.height.mas_equalTo(self.view.frame.size.height);
  296. }];
  297. }
  298. }
  299. @end