ソースを参照

PDFView(ios) - 页眉页脚的基本UI交互

yangliuhua 2 年 前
コミット
61cd8c92f7
28 ファイル変更674 行追加251 行削除
  1. 24 6
      PDFViewer.xcodeproj/project.pbxproj
  2. BIN
      PDFViewer.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile_2.xcuserdatad/UserInterfaceState.xcuserstate
  3. 12 76
      PDFViewer.xcodeproj/xcuserdata/kdanmobile_2.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 3 0
      PDFViewer/Controller/CPDFBatesAddViewController.h
  5. 144 37
      PDFViewer/Controller/CPDFBatesAddViewController.m
  6. 3 1
      PDFViewer/Controller/CPDFBatesDeleteViewController.m
  7. 5 0
      PDFViewer/Controller/CPDFBatesSettingController.h
  8. 5 6
      PDFViewer/Controller/CPDFBatesSettingController.m
  9. 10 3
      PDFViewer/Controller/CPDFHeaderFooterAddController.h
  10. 76 5
      PDFViewer/Controller/CPDFHeaderFooterAddController.m
  11. 3 4
      PDFViewer/Controller/CPDFHeaderFooterAddView.h
  12. 17 42
      PDFViewer/Controller/CPDFHeaderFooterAddView.m
  13. 3 1
      PDFViewer/Controller/CPDFHeaderFooterDeleteController.m
  14. 2 2
      PDFViewer/Controller/CPDFHeaderFooterSettingController.h
  15. 0 8
      PDFViewer/Controller/CPDFHeaderFooterSettingController.m
  16. 1 1
      PDFViewer/Controller/CPDFViewController.h
  17. 63 10
      PDFViewer/Controller/CPDFViewController.m
  18. 2 0
      PDFViewer/Info.plist
  19. 24 0
      PDFViewer/Model/CPDFBatesModel.h
  20. 12 0
      PDFViewer/Model/CPDFBatesModel.m
  21. 1 2
      PDFViewer/Model/CPDFModelData.h
  22. 2 2
      PDFViewer/Model/CPDFModelData.m
  23. 18 0
      PDFViewer/Model/CPDFPageFomatModel.h
  24. 12 0
      PDFViewer/Model/CPDFPageFomatModel.m
  25. 2 2
      PDFViewer/View/CPDFBatesAddView.h
  26. 121 43
      PDFViewer/View/CPDFBatesAddView.m
  27. 25 0
      PDFViewer/View/CPDFHeaderFooterTextTableView.h
  28. 84 0
      PDFViewer/View/CPDFHeaderFooterTextTableView.m

+ 24 - 6
PDFViewer.xcodeproj/project.pbxproj

@@ -20,7 +20,7 @@
 		C993B90F2927200400D8F474 /* CPDFBatesAddView.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B90E2927200400D8F474 /* CPDFBatesAddView.m */; };
 		C993B912292B07F600D8F474 /* CPDFHeaderFooterSettingController.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B911292B07F600D8F474 /* CPDFHeaderFooterSettingController.m */; };
 		C993B915292B1C4100D8F474 /* CPDFDropDownView.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B914292B1C4100D8F474 /* CPDFDropDownView.m */; };
-		C993B918292B5BC500D8F474 /* CPDFModelData.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B917292B5BC500D8F474 /* CPDFModelData.m */; };
+		C993B918292B5BC500D8F474 /* CPDFHeaderFooterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B917292B5BC500D8F474 /* CPDFHeaderFooterModel.m */; };
 		C9E65160292CBC31001B2C9D /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E65146292CBC2F001B2C9D /* MASViewConstraint.m */; };
 		C9E65161292CBC31001B2C9D /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E65148292CBC2F001B2C9D /* NSLayoutConstraint+MASDebugAdditions.m */; };
 		C9E65162292CBC31001B2C9D /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E65149292CBC30001B2C9D /* View+MASAdditions.m */; };
@@ -31,6 +31,9 @@
 		C9E65168292CBC31001B2C9D /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E65159292CBC31001B2C9D /* MASLayoutConstraint.m */; };
 		C9E65169292CBC31001B2C9D /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E6515B292CBC31001B2C9D /* MASCompositeConstraint.m */; };
 		C9E6516A292CBC31001B2C9D /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E6515C292CBC31001B2C9D /* NSArray+MASAdditions.m */; };
+		C9E6516D292F4EB5001B2C9D /* CPDFBatesModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E6516C292F4EB5001B2C9D /* CPDFBatesModel.m */; };
+		C9E6517029306274001B2C9D /* CPDFHeaderFooterTextTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E6516F29306274001B2C9D /* CPDFHeaderFooterTextTableView.m */; };
+		C9E6517329308A6C001B2C9D /* CPDFPageFomatModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E6517229308A6C001B2C9D /* CPDFPageFomatModel.m */; };
 		EC3198782922593A008E0889 /* ComPDFKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC31987629225931008E0889 /* ComPDFKit.framework */; };
 		EC3198792922593A008E0889 /* ComPDFKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EC31987629225931008E0889 /* ComPDFKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		EC62978E29220F8300D339EE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC62978D29220F8300D339EE /* AppDelegate.m */; };
@@ -82,8 +85,8 @@
 		C993B911292B07F600D8F474 /* CPDFHeaderFooterSettingController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFHeaderFooterSettingController.m; sourceTree = "<group>"; };
 		C993B913292B1C4100D8F474 /* CPDFDropDownView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFDropDownView.h; sourceTree = "<group>"; };
 		C993B914292B1C4100D8F474 /* CPDFDropDownView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFDropDownView.m; sourceTree = "<group>"; };
-		C993B916292B5BC500D8F474 /* CPDFModelData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFModelData.h; sourceTree = "<group>"; };
-		C993B917292B5BC500D8F474 /* CPDFModelData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFModelData.m; sourceTree = "<group>"; };
+		C993B916292B5BC500D8F474 /* CPDFHeaderFooterModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFHeaderFooterModel.h; sourceTree = "<group>"; };
+		C993B917292B5BC500D8F474 /* CPDFHeaderFooterModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFHeaderFooterModel.m; sourceTree = "<group>"; };
 		C9E65146292CBC2F001B2C9D /* MASViewConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASViewConstraint.m; sourceTree = "<group>"; };
 		C9E65147292CBC2F001B2C9D /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MASAdditions.h"; sourceTree = "<group>"; };
 		C9E65148292CBC2F001B2C9D /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = "<group>"; };
@@ -109,6 +112,12 @@
 		C9E6515D292CBC31001B2C9D /* MASCompositeConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASCompositeConstraint.h; sourceTree = "<group>"; };
 		C9E6515E292CBC31001B2C9D /* MASViewAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASViewAttribute.h; sourceTree = "<group>"; };
 		C9E6515F292CBC31001B2C9D /* MASConstraint+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MASConstraint+Private.h"; sourceTree = "<group>"; };
+		C9E6516B292F4EB5001B2C9D /* CPDFBatesModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFBatesModel.h; sourceTree = "<group>"; };
+		C9E6516C292F4EB5001B2C9D /* CPDFBatesModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFBatesModel.m; sourceTree = "<group>"; };
+		C9E6516E29306274001B2C9D /* CPDFHeaderFooterTextTableView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFHeaderFooterTextTableView.h; sourceTree = "<group>"; };
+		C9E6516F29306274001B2C9D /* CPDFHeaderFooterTextTableView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFHeaderFooterTextTableView.m; sourceTree = "<group>"; };
+		C9E6517129308A6C001B2C9D /* CPDFPageFomatModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFPageFomatModel.h; sourceTree = "<group>"; };
+		C9E6517229308A6C001B2C9D /* CPDFPageFomatModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFPageFomatModel.m; sourceTree = "<group>"; };
 		EC31987629225931008E0889 /* ComPDFKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ComPDFKit.framework; sourceTree = "<group>"; };
 		EC62978929220F8300D339EE /* PDFViewer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PDFViewer.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		EC62978C29220F8300D339EE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@@ -237,8 +246,12 @@
 			children = (
 				EC6297B6292239A700D339EE /* CPDFModel.h */,
 				EC6297B7292239A700D339EE /* CPDFModel.m */,
-				C993B916292B5BC500D8F474 /* CPDFModelData.h */,
-				C993B917292B5BC500D8F474 /* CPDFModelData.m */,
+				C993B916292B5BC500D8F474 /* CPDFHeaderFooterModel.h */,
+				C993B917292B5BC500D8F474 /* CPDFHeaderFooterModel.m */,
+				C9E6516B292F4EB5001B2C9D /* CPDFBatesModel.h */,
+				C9E6516C292F4EB5001B2C9D /* CPDFBatesModel.m */,
+				C9E6517129308A6C001B2C9D /* CPDFPageFomatModel.h */,
+				C9E6517229308A6C001B2C9D /* CPDFPageFomatModel.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -253,6 +266,8 @@
 				C993B90E2927200400D8F474 /* CPDFBatesAddView.m */,
 				C993B913292B1C4100D8F474 /* CPDFDropDownView.h */,
 				C993B914292B1C4100D8F474 /* CPDFDropDownView.m */,
+				C9E6516E29306274001B2C9D /* CPDFHeaderFooterTextTableView.h */,
+				C9E6516F29306274001B2C9D /* CPDFHeaderFooterTextTableView.m */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -358,7 +373,7 @@
 				C96D13992924E09300CC92C7 /* CPDFHeaderFooterAddView.m in Sources */,
 				C993B915292B1C4100D8F474 /* CPDFDropDownView.m in Sources */,
 				ECC8831D2923352B00F6392E /* CPDFViewController.m in Sources */,
-				C993B918292B5BC500D8F474 /* CPDFModelData.m in Sources */,
+				C993B918292B5BC500D8F474 /* CPDFHeaderFooterModel.m in Sources */,
 				C9E65169292CBC31001B2C9D /* MASCompositeConstraint.m in Sources */,
 				C96D13962924DD7E00CC92C7 /* CPDFHeaderFooterAddController.m in Sources */,
 				C993B909292654BE00D8F474 /* CPDFBatesDeleteViewController.m in Sources */,
@@ -371,6 +386,7 @@
 				C9E65161292CBC31001B2C9D /* NSLayoutConstraint+MASDebugAdditions.m in Sources */,
 				C993B90C29271FCA00D8F474 /* CPDFBatesAddViewController.m in Sources */,
 				C9E65166292CBC31001B2C9D /* ViewController+MASAdditions.m in Sources */,
+				C9E6516D292F4EB5001B2C9D /* CPDFBatesModel.m in Sources */,
 				C9E65160292CBC31001B2C9D /* MASViewConstraint.m in Sources */,
 				C993B90229264DC900D8F474 /* CPDFBatesSettingController.m in Sources */,
 				C9E65168292CBC31001B2C9D /* MASLayoutConstraint.m in Sources */,
@@ -378,10 +394,12 @@
 				C993B912292B07F600D8F474 /* CPDFHeaderFooterSettingController.m in Sources */,
 				EC62978E29220F8300D339EE /* AppDelegate.m in Sources */,
 				EC62979F29220F8400D339EE /* main.m in Sources */,
+				C9E6517029306274001B2C9D /* CPDFHeaderFooterTextTableView.m in Sources */,
 				C9E6516A292CBC31001B2C9D /* NSArray+MASAdditions.m in Sources */,
 				C993B8FE2925E52800D8F474 /* CPDFHeaderFooterDeleteController.m in Sources */,
 				EC6297BD292239C200D339EE /* CPDFListController.m in Sources */,
 				EC62979129220F8300D339EE /* SceneDelegate.m in Sources */,
+				C9E6517329308A6C001B2C9D /* CPDFPageFomatModel.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

BIN
PDFViewer.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile_2.xcuserdatad/UserInterfaceState.xcuserstate


+ 12 - 76
PDFViewer.xcodeproj/xcuserdata/kdanmobile_2.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -4,22 +4,6 @@
    type = "1"
    version = "2.0">
    <Breakpoints>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "0D73DBC1-666A-414F-80BE-9189EC89462F"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDFViewer/Controller/CPDFViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "2"
-            endingLineNumber = "2"
-            landmarkName = "unknown"
-            landmarkType = "0">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -40,7 +24,7 @@
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
             uuid = "05C2F84D-3598-4B1E-8CAA-E3E0C49A840F"
-            shouldBeEnabled = "Yes"
+            shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDFViewer/Controller/HeaderFooterAlertViewController.m"
@@ -56,7 +40,7 @@
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
             uuid = "FE064F60-543B-4BD1-8A92-595D053B00F0"
-            shouldBeEnabled = "Yes"
+            shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDFViewer/Controller/HeaderFooterAlertViewController.m"
@@ -71,80 +55,32 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "7D49F75E-93DC-4295-8BA2-457888F78E13"
+            uuid = "E6A4B342-B296-4346-B5DE-EEAD59466EFB"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDFViewer/Controller/CPDFHeaderFooterAddController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "224"
-            endingLineNumber = "224"
-            landmarkName = "-viewWillTransitionToSize:withTransitionCoordinator:"
+            startingLineNumber = "87"
+            endingLineNumber = "87"
+            landmarkName = "-changeTableView:"
             landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "7D49F75E-93DC-4295-8BA2-457888F78E13 - ed2ffc1774d67d30"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "-[CPDFHeaderFooterAddController viewWillTransitionToSize:withTransitionCoordinator:]"
-                  moduleName = "PDFViewer"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile_2/kmpdfkit_demo/PDFViewer/Controller/CPDFHeaderFooterAddController.m"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "224"
-                  endingLineNumber = "224"
-                  offsetFromSymbolStart = "155">
-               </Location>
-               <Location
-                  uuid = "7D49F75E-93DC-4295-8BA2-457888F78E13 - e02196fc83340ad5"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "__84-[CPDFHeaderFooterAddController viewWillTransitionToSize:withTransitionCoordinator:]_block_invoke"
-                  moduleName = "PDFViewer"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile_2/kmpdfkit_demo/PDFViewer/Controller/CPDFHeaderFooterAddController.m"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "225"
-                  endingLineNumber = "225"
-                  offsetFromSymbolStart = "57">
-               </Location>
-            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "D74DADAB-BC29-4CBC-99D2-A7D19E66ADA1"
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDFViewer/Controller/CPDFHeaderFooterAddController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "80"
-            endingLineNumber = "80"
-            landmarkName = "-changeFontSize:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "E8A7BF47-D4E9-4A9B-82AD-9B3309FC9083"
-            shouldBeEnabled = "No"
+            uuid = "A2F734DB-C4C5-43E0-89EA-C26301A35044"
+            shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDFViewer/Controller/CPDFViewController.m"
+            filePath = "PDFViewer/Controller/CPDFTableViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "98"
-            endingLineNumber = "98"
-            landmarkName = "-getModel:"
+            startingLineNumber = "17"
+            endingLineNumber = "17"
+            landmarkName = "-dataArray"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 3 - 0
PDFViewer/Controller/CPDFBatesAddViewController.h

@@ -8,6 +8,7 @@
 #import <UIKit/UIKit.h>
 #import "CPDFBatesAddView.h"
 #import "CPDFHeaderFooterAddController.h"
+#import "CPDFBatesModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -24,6 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,assign) Position position;
 @property (nonatomic,strong) CPDFBatesAddView *batesAddView;
 @property (nonatomic,strong) UILabel *showLabel;
+@property (nonatomic,strong) UIImageView *imageView;
+@property (nonatomic,strong) CPDFBatesModel *modelBatesData;
 
 @end
 

+ 144 - 37
PDFViewer/Controller/CPDFBatesAddViewController.m

@@ -25,58 +25,109 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
-    self.navigationItem.title = @"Add Bates/";
+    self.navigationItem.title = @"Add Bates";
     self.navigationController.toolbarHidden = NO;
-    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:nil];
+    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneBatesClick:)];
     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelClick:)];
+    //initialize model
+    _modelBatesData = [[CPDFBatesModel alloc] init];
     //add page image
-    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((393/2)-(self.size.width/6), 175, self.size.width/3, self.size.height/3)];
-    imageView.image = self.image;
-    CALayer *layer = [imageView layer];
+    _imageView = [[UIImageView alloc] init];
+    _imageView.image = self.image;
+    CALayer *layer = [_imageView layer];
     layer.borderColor = [[UIColor blackColor] CGColor];
-    layer.borderWidth = 1.0f;
-    [self.view addSubview:imageView];
-    //add view
-    _batesAddView = [[CPDFBatesAddView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height/2, self.view.frame.size.width, self.view.frame.size.height)];
+    layer.borderWidth = 0.5f;
+    [self.view addSubview:_imageView];
+    _batesAddView = [[CPDFBatesAddView alloc] init];
     [self.view addSubview:_batesAddView];
+    
+    [_imageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.view.mas_top).offset(125);
+        make.left.equalTo(self.view.mas_left).offset((393/2)-(self.size.width/6));
+        make.width.mas_equalTo(self.size.width/3);
+        make.height.mas_equalTo(self.size.height/3);
+    }];
+    
+    //add view
+    [self.batesAddView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.imageView.mas_bottom).offset(60);
+        make.left.equalTo(self.view.mas_left);
+        make.width.mas_equalTo(self.view.frame.size.width);
+        make.height.mas_equalTo(self.view.frame.size.height);
+    }];
     [ _batesAddView.localSegment addTarget:self action:@selector(changeLocation:) forControlEvents:UIControlEventValueChanged];
     [ _batesAddView.aligbmentSegment addTarget:self action:@selector(changeAligbment:) forControlEvents:UIControlEventValueChanged];
     [ _batesAddView.colorSlider addTarget:self action:@selector(sliderChange:) forControlEvents:UIControlEventValueChanged];
+    [_batesAddView.pageIndexNumberText addTarget:self action:@selector(changePageStart:) forControlEvents:UIControlEventEditingChanged];
+    [_batesAddView.pageNumberText addTarget:self action:@selector(changeText:) forControlEvents:UIControlEventEditingChanged];
+    [_batesAddView.fontNameText addTarget:self action:@selector(changeFontname:) forControlEvents:UIControlEventEditingChanged];
+}
+
+- (void)doneBatesClick:(UIBarButtonItem *)btn {
+    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:self.modelBatesData,@"batesModel", nil];
+    NSNotification *notification = [NSNotification notificationWithName:@"getAddBatesModel" object:nil userInfo:dict];
+    [[NSNotificationCenter defaultCenter] postNotification:notification];
+    [self.navigationController popViewControllerAnimated:YES];
 }
 
 - (void)cancelClick:(UIBarButtonItem *)btn {
     [self.navigationController popViewControllerAnimated:YES];
 }
 
+- (void)changeText:(UITextField *)text {
+    self.showLabel.text = text.text;
+    self.modelBatesData.fontText = text.text;
+}
+
+- (void)changePageStart:(UITextField *)text {
+    int start = [text.text intValue];
+    self.modelBatesData.pageStart = [NSString stringWithFormat:@"%d",start - 1];
+}
+
+- (void)changeFontname:(UITextField *)fontName {
+    self.showLabel.font = [UIFont fontWithName:fontName.text size:5];
+    self.modelBatesData.fontName = fontName.text;
+    self.modelBatesData.fontSize = 15;
+}
+
 //slider select color
 - (void)sliderChange:(UISlider *)slider {
     switch ((int)slider.value/10) {
         case 0:
             self.showLabel.textColor = [UIColor redColor];
+            self.modelBatesData.fontColor = [UIColor redColor];
             break;
         case 1:
             self.showLabel.textColor = [UIColor orangeColor];
+            self.modelBatesData.fontColor = [UIColor orangeColor];
             break;
         case 2:
             self.showLabel.textColor = [UIColor colorWithRed:239.0/255 green:140.0/255 blue:133.0/255 alpha:1];
+            self.modelBatesData.fontColor = [UIColor colorWithRed:239.0/255 green:140.0/255 blue:133.0/255 alpha:1];
             break;
         case 3:
             self.showLabel.textColor = [UIColor yellowColor];
+            self.modelBatesData.fontColor = [UIColor yellowColor];
             break;
         case 4:
             self.showLabel.textColor = [UIColor greenColor];
+            self.modelBatesData.fontColor = [UIColor greenColor];
             break;
         case 5:
             self.showLabel.textColor = [UIColor blueColor];
+            self.modelBatesData.fontColor = [UIColor blueColor];
             break;
         case 6:
             self.showLabel.textColor = [UIColor purpleColor];
+            self.modelBatesData.fontColor = [UIColor purpleColor];
             break;
         case 7:
             self.showLabel.textColor = [UIColor colorWithRed:235.0/255 green:61.0/255 blue:133.0/255 alpha:1];
+            self.modelBatesData.fontColor = [UIColor colorWithRed:235.0/255 green:61.0/255 blue:133.0/255 alpha:1];
             break;
         case 8:
             self.showLabel.textColor = [UIColor blackColor];
+            self.modelBatesData.fontColor = [UIColor blackColor];
             break;
         default:
             break;
@@ -110,44 +161,100 @@
     if (_showLabel == nil) {
         _showLabel = [[UILabel alloc] init];
     }
+    [_showLabel setText:@"0016"];
+    _showLabel.font = [UIFont systemFontOfSize:5];
+    [self.imageView addSubview:self.showLabel];
     switch (self.position.location) {
         case kHeader:
-            NSLog(@"header");
-            switch (self.position.aligment) {
-                case kLeft:
-                    _showLabel.frame = CGRectMake((393/2)-(self.size.width/6)+2, 177, 5, 5);
-                    break;
-                case kCenter:
-                    _showLabel.frame = CGRectMake(393/2, 177, 5, 5);
-                    break;
-                case kRinght:
-                    _showLabel.frame = CGRectMake((393/2)+(self.size.width/6)-7, 177, 5, 5);
-                    break;
-                default:
-                    break;
+            if (self.position.aligment == kLeft) {
+                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(_imageView.mas_top).offset(1);
+                    make.left.equalTo(self.imageView.mas_left).offset(1);
+                    make.height.mas_equalTo(5);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelBatesData.fontPosition = 0;
+            } else if (self.position.aligment == kCenter) {
+                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(_imageView.mas_top).offset(1);
+                    make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 6);
+                    make.height.mas_equalTo(5);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelBatesData.fontPosition = 1;
+            } else {
+                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.imageView.mas_top).offset(0.5);
+                    make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 3 - 12);
+                    make.height.mas_equalTo(5);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelBatesData.fontPosition = 2;
             }
             break;
         case kFooter:
-            NSLog(@"Footer");
-            switch (self.position.aligment) {
-                case kLeft:
-                    _showLabel.frame = CGRectMake((393/2)-(self.size.width/6)+2, 170+self.size.height/3, 5, 5);
-                    break;
-                case kCenter:
-                    _showLabel.frame = CGRectMake(393/2, 170+self.size.height/3, 5, 5);
-                    break;
-                case kRinght:
-                    _showLabel.frame = CGRectMake((393/2)+(self.size.width/6)-7, 170+self.size.height/3, 5, 5);
-                    break;
-                default:
-                    break;
+            if (self.position.aligment == kLeft) {
+                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.imageView.mas_top).offset(self.size.height / 3 - 12);
+                    make.left.equalTo(self.imageView.mas_left).offset(0.5);
+                    make.height.mas_equalTo(5);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelBatesData.fontPosition = 3;
+            } else if (self.position.aligment == kCenter) {
+                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.imageView.mas_top).offset(self.size.height / 3 - 12);
+                    make.left.equalTo(self.imageView.mas_left).offset(self.size.width/6);
+                    make.height.mas_equalTo(5);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelBatesData.fontPosition = 4;
+            } else {
+                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.imageView.mas_top).offset(self.size.height / 3 - 12);
+                    make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 3 - 12);
+                    make.height.mas_equalTo(5);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelBatesData.fontPosition = 5;
             }
             break;
         default:
             break;
     }
-    [_showLabel setText:@"1"];
-    [self.view addSubview:_showLabel];
+}
+
+- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
+    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
+        [_imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset((393/2)-(self.size.height/6));
+            make.left.equalTo(self.view.mas_left).offset((393/2)-(self.size.width/6));
+            make.width.mas_equalTo(self.size.width/3);
+            make.height.mas_equalTo(self.size.height/3);
+        }];
+        //add view
+        [self.batesAddView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset(15);
+            make.left.equalTo(self.view.mas_left).offset(self.view.frame.size.width / 2 + 200);
+            make.width.mas_equalTo(393);
+            make.height.mas_equalTo(self.view.frame.size.height - 20);
+        }];
+        
+    } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait) {
+        [_imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset(125);
+            make.left.equalTo(self.view.mas_left).offset((393 / 2)-(self.size.width / 6));
+            make.width.mas_equalTo(self.size.width / 3);
+            make.height.mas_equalTo(self.size.height / 3);
+        }];
+        //add view
+        [self.batesAddView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.imageView.mas_bottom).offset(60);
+            make.left.equalTo(self.view.mas_left);
+            make.width.mas_equalTo(self.view.frame.size.width);
+            make.height.mas_equalTo(self.view.frame.size.height);
+        }];
+    }
 }
 
 @end

+ 3 - 1
PDFViewer/Controller/CPDFBatesDeleteViewController.m

@@ -18,7 +18,9 @@
     // Do any additional setup after loading the view.
     UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Delete Bates" message:@"Are you sure delete all Bates" preferredStyle:UIAlertControllerStyleAlert];
     UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            NSLog(@"OK Action");
+        NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"deleteBates", nil];
+        NSNotification *notification = [NSNotification notificationWithName:@"deleteBatesModel" object:nil userInfo:dict];
+        [[NSNotificationCenter defaultCenter] postNotification:notification];
         }];
     UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
         NSLog(@"Cancel Action");

+ 5 - 0
PDFViewer/Controller/CPDFBatesSettingController.h

@@ -6,6 +6,9 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "CPDFBatesModel.h"
+#import "CPDFBatesDeleteViewController.h"
+#import "CPDFBatesAddViewController.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -13,6 +16,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic,strong) UIImage *image;
 @property (nonatomic,assign) CGSize size;
+@property (nonatomic,strong) CPDFBatesModel *modelBatesData;
+@property (nonatomic,strong) CPDFBatesAddViewController *batesAddControl;
 
 - (id)initWithIamge:(UIImage *)image WithSize:(CGSize)size;
 

+ 5 - 6
PDFViewer/Controller/CPDFBatesSettingController.m

@@ -6,8 +6,6 @@
 //
 
 #import "CPDFBatesSettingController.h"
-#import "CPDFBatesDeleteViewController.h"
-#import "CPDFBatesAddViewController.h"
 
 @interface CPDFBatesSettingController ()
 
@@ -29,10 +27,11 @@
     // Do any additional setup after loading the view.
     UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
     UIAlertAction *addBatesAction = [UIAlertAction actionWithTitle:@"Add Bates" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        CPDFBatesAddViewController *batesAddControl = [[CPDFBatesAddViewController alloc] initWithIamge:self.image WithSize:self.size];
-        [self addChildViewController:batesAddControl];
-        [self.view addSubview:batesAddControl.view];
-        [self.navigationController pushViewController:batesAddControl animated:NO];
+        self.batesAddControl = [[CPDFBatesAddViewController alloc] initWithIamge:self.image WithSize:self.size];
+        [self addChildViewController:self.batesAddControl];
+        [self.view addSubview:self.batesAddControl.view];
+        [self.navigationController pushViewController:self.batesAddControl animated:NO];
+        self.view.hidden = YES;
         }];
     UIAlertAction *delereBatesAction = [UIAlertAction actionWithTitle:@"Delete Bates" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
         CPDFBatesDeleteViewController *batesDeleteControl = [[CPDFBatesDeleteViewController alloc] init];

+ 10 - 3
PDFViewer/Controller/CPDFHeaderFooterAddController.h

@@ -9,7 +9,9 @@
 #import <ComPDFKit/CPDFHeaderFooter.h>
 #import <ComPDFKit/ComPDFKit.h>
 #import "CPDFHeaderFooterAddView.h"
-#import "CPDFModelData.h"
+#import "CPDFHeaderFooterModel.h"
+#import "CPDFHeaderFooterTextTableView.h"
+#import "CPDFPageFomatModel.h"
 #import "Masonry.h"
 
 NS_ASSUME_NONNULL_BEGIN
@@ -30,7 +32,7 @@ typedef struct Position {
     Aligment aligment;
 }Position;
 
-@interface CPDFHeaderFooterAddController : UIViewController
+@interface CPDFHeaderFooterAddController : UIViewController <UITableViewDelegate,UITableViewDataSource>
 
 - (void)cancelClick:(UIBarButtonItem *)btn;
 - (void)doneClick:(UIBarButtonItem *)btn;
@@ -39,17 +41,22 @@ typedef struct Position {
 - (void)changeAligbment:(UISegmentedControl *)sender;
 - (void)sliderChange:(UISlider *)slider;
 - (void)changeFontSize:(UITextField *)text;
+- (void)changePageStart:(UITextField *)text;
+- (void)changeText:(UITextField *)text;
  
 @property (nonatomic,assign) CGSize size;
 @property (nonatomic,strong) UIImage *image;
 @property (nonatomic,assign) Position position;
 @property (nonatomic,strong) CPDFHeaderFooterAddView *headerFooterview;
 @property (nonatomic,strong) UILabel *showLabel;
-@property (nonatomic,strong) CPDFModelData *modelData;
+@property (nonatomic,strong) CPDFHeaderFooterModel *modelData;
 @property (nonatomic,strong) CPDFDocument *document;
 @property (nonatomic,strong) CPDFHeaderFooter *headerFooter;
 @property (nonatomic,strong) CPDFView *pdfView;
 @property (nonatomic,strong) UIImageView *imageView;
+@property (nonatomic,strong) CPDFHeaderFooterTextTableView *pageFormat;
+@property (nonatomic,strong) NSMutableArray *dataArray;
+@property (nonatomic,strong) CPDFPageFomatModel *model;
 
 @end
 

+ 76 - 5
PDFViewer/Controller/CPDFHeaderFooterAddController.m

@@ -32,17 +32,17 @@
     self.navigationController.toolbarHidden = YES;
     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneClick:)];
     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelClick:)];
+    //initialize page format
     //initialize model
-    _modelData = [[CPDFModelData alloc] init];
+    _modelData = [[CPDFHeaderFooterModel alloc] init];
     //add page image
-    //_imageView = [[UIImageView alloc] initWithFrame:CGRectMake((393/2)-(self.size.width/6), 125, self.size.width/3, self.size.height/3)];
+    _headerFooterview = [[CPDFHeaderFooterAddView alloc] init];
     _imageView = [[UIImageView alloc] init];
     _imageView.image = self.image;
     CALayer *layer = [_imageView layer];
     layer.borderColor = [[UIColor blackColor] CGColor];
     layer.borderWidth = 1.0f;
     [self.view addSubview:_imageView];
-    _headerFooterview = [[CPDFHeaderFooterAddView alloc] init];
     [self.view addSubview:_headerFooterview];
     [_imageView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.top.equalTo(self.view.mas_top).offset(125);
@@ -62,20 +62,89 @@
     [_headerFooterview.localSegment addTarget:self action:@selector(changeLocation:) forControlEvents:UIControlEventValueChanged];
     [_headerFooterview.aligbmentSegment addTarget:self action:@selector(changeAligbment:) forControlEvents:UIControlEventValueChanged];
     [_headerFooterview.colorSlider addTarget:self action:@selector(sliderChange:) forControlEvents:UIControlEventValueChanged];
-    [_headerFooterview.fontSizeText addTarget:self action:@selector(changeFontSize:) forControlEvents:UIControlEventEditingDidEnd];
+    [_headerFooterview.fontSizeText addTarget:self action:@selector(changeFontSize:) forControlEvents:UIControlEventEditingChanged];
+    [_headerFooterview.pageIndexNumberText addTarget:self action:@selector(changePageStart:) forControlEvents:UIControlEventEditingChanged];
+    //[_headerFooterview.pageNumberText addTarget:self action:@selector(changeTableView:) forControlEvents:UIControlEventEditingDidBegin];
+    [_headerFooterview.pageNumberText addTarget:self action:@selector(changeText:) forControlEvents:UIControlEventEditingChanged];
+}
+
+//tableView initialize
+- (NSArray *)dataArray {
+    if (!_dataArray) {
+        _dataArray = [NSMutableArray array];
+        CPDFPageFomatModel *model1 = [[CPDFPageFomatModel alloc] init];
+        model1.pageFormat = @"1";
+        CPDFPageFomatModel *model2 = [[CPDFPageFomatModel alloc] init];
+        model2.pageFormat = @"number";
+        
+        [_dataArray addObject:model1];
+        [_dataArray addObject:model2];
+    }
+    return _dataArray;
+}
+
+- (void)changeTableView:(UITextField *)text {
+    _pageFormat = [[CPDFHeaderFooterTextTableView alloc] init];
+    _pageFormat.tableView.delegate = self;
+    _pageFormat.tableView.dataSource = self;
+    //self.pageFormat.frame = CGRectMake(100, 300, 100, 150);
+    [self.headerFooterview addSubview:self.pageFormat];
+    [self.view bringSubviewToFront:self.pageFormat];
+    [_pageFormat mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.headerFooterview.mas_top).offset(50);
+        make.left.equalTo(self.headerFooterview.mas_left).offset(50);
+        make.width.mas_equalTo(200);
+        make.height.mas_equalTo(250);
+    }];
+    [self.pageFormat.okBtn addTarget:self action:@selector(pageFormatOk:) forControlEvents:UIControlEventTouchUpInside];
+}
+
+
+- (void)pageFormatOk:(UIButton *)okBtn {
+    [self.pageFormat removeFromSuperview];
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return self.dataArray.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"pageFormat"];
+    if (cell == nil) {
+        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"pageFormat"];
+    }
+    cell.textLabel.text = [self.dataArray[indexPath.row] pageFormat];
+    return cell;
 }
 
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    self.headerFooterview.pageNumberText.text = [self.dataArray[indexPath.row] pageFormat];
+}
+//candel button enable
 - (void)cancelClick:(UIBarButtonItem *)btn {
     [self.navigationController popViewControllerAnimated:YES];
 }
 
+//done button enable
 - (void)doneClick:(UIBarButtonItem *)btn {
     NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:self.modelData,@"model", nil];
-    NSNotification *notification = [NSNotification notificationWithName:@"changeModel" object:nil userInfo:dict];
+    NSNotification *notification = [NSNotification notificationWithName:@"getAddHeaderFooterModel" object:nil userInfo:dict];
     [[NSNotificationCenter defaultCenter] postNotification:notification];
     [self.navigationController popViewControllerAnimated:YES];
 }
 
+//get page text for HeaderFooterModel
+- (void)changeText:(UITextField *)text {
+    self.showLabel.text = text.text;
+    self.modelData.fontText = text.text;
+}
+
+//get page start for HeaderFooterModel
+- (void)changePageStart:(UITextField *)text {
+    int start = [text.text intValue];
+    self.modelData.pageStart = [NSString stringWithFormat:@"%d",start - 1];
+}
+
 - (void)changeFontSize:(UITextField *)text {
     float size = [text.text floatValue];
     _showLabel.font = [UIFont systemFontOfSize:size / 3];
@@ -158,6 +227,7 @@
         _showLabel = [[UILabel alloc] init];
     }
     [_showLabel setText:@"1"];
+    _showLabel.font = [UIFont systemFontOfSize:6];
     [self.imageView addSubview:self.showLabel];
     switch (self.position.location) {
         case kHeader:
@@ -219,6 +289,7 @@
     }
 }
 
+//when orientation
 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
     if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
         [_imageView mas_remakeConstraints:^(MASConstraintMaker *make) {

+ 3 - 4
PDFViewer/Controller/CPDFHeaderFooterAddView.h

@@ -10,6 +10,8 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+#define kNumber @"^[0-9]+$";
+
 @interface CPDFHeaderFooterAddView : UIView  <UITextFieldDelegate>
 
 @property (nonatomic,strong) UILabel *localLabel;
@@ -21,15 +23,12 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,strong) UISlider *colorSlider;
 @property (nonatomic,strong) UILabel *pageNumberLabel;
 @property (nonatomic,strong) UITextField *pageNumberText;
-//@property (nonatomic,strong) CPDFDropDownView *dropdownView;
 @property (nonatomic,strong) UILabel *fontSizeLabel;
 @property (nonatomic,strong) UITextField *fontSizeText;
 @property (nonatomic,strong) UILabel *pageIndexLabel;
-@property (nonatomic,strong) UILabel *pageIndexNumberLabel;
+@property (nonatomic,strong) UITextField *pageIndexNumberText;
 @property (nonatomic,strong) UIStepper *pageIndexNumberStepper;
 
-- (void)stepperValueChanged:(UIStepper *)pageIndexNumberStepper;
-
 @end
 
 NS_ASSUME_NONNULL_END

+ 17 - 42
PDFViewer/Controller/CPDFHeaderFooterAddView.m

@@ -79,21 +79,18 @@
             make.left.equalTo(self.mas_left).offset(offsetx);
             make.width.mas_equalTo(100);
             make.height.mas_equalTo(22);
-            //make.bottom.equalTo(_colerImage.mas_top).offset(-offsetx);
         }];
         [_colerImage mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_colorLabel.mas_bottom).offset(offsetx);
             make.left.equalTo(self.mas_left).offset(4 * offsetx);
             make.width.mas_equalTo(364);
             make.height.mas_equalTo(44);
-            //make.bottom.equalTo(_colorSlider.mas_top).offset(-offsetx);
         }];
         [_colorSlider mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_colerImage.mas_bottom).offset(offsetx);
             make.left.equalTo(self.mas_left).offset(4 * offsetx);
             make.width.mas_equalTo(364);
             make.height.mas_equalTo(44);
-            //make.bottom.equalTo(_pageNumberLabel.mas_top).offset(-offsetx);
         }];
         
         
@@ -101,8 +98,6 @@
         _pageNumberLabel = [[UILabel alloc] init];
         [_pageNumberLabel setText:@"Page Text"];
         _pageNumberLabel.font = [UIFont boldSystemFontOfSize:14];
-       // NSArray *str = [[NSArray alloc] initWithObjects:@"1",@"第1页", nil];
-        //_dropdownView = [[CPDFDropDownView alloc] init];
         _pageNumberText = [[UITextField alloc] init];
         _pageNumberText.borderStyle = UITextBorderStyleRoundedRect;
         _pageNumberText.placeholder = @"text";
@@ -111,18 +106,14 @@
         [_pageNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
             make.left.equalTo(self.mas_left).offset(offsetx);
-            //make.right.equalTo(_pageNumberText.mas_left).offset(-offsetx);
             make.height.mas_equalTo(44);
             make.width.mas_equalTo(73);
-            //make.bottom.equalTo(_dropdownView.mas_top).offset(-offsetx);
         }];
         [_pageNumberText mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
             make.left.equalTo(_pageNumberLabel.mas_right).offset(offsetx);
-            //make.right.equalTo(_fontSizeLabel.mas_left).offset(-offsetx);
             make.height.mas_equalTo(44);
             make.width.mas_equalTo(93);
-            //make.bottom.equalTo(_pageIndexNumberLabel.mas_top).offset(-offsetx);
         }];
         
         
@@ -132,7 +123,7 @@
         _fontSizeLabel.font = [UIFont boldSystemFontOfSize:14];
         _fontSizeText = [[UITextField alloc] init];
         _fontSizeText.borderStyle = UITextBorderStyleRoundedRect;
-        _fontSizeText.placeholder = @"10.0";
+        _fontSizeText.placeholder = @"18.0";
         _fontSizeText.keyboardType = UIKeyboardTypeDefault;
         _fontSizeText.delegate = self;
         [self addSubview:_fontSizeLabel];
@@ -140,15 +131,12 @@
         [_fontSizeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
             make.left.equalTo(_pageNumberText.mas_right).offset(offsetx + 20);
-            //make.right.equalTo(_fontSizeText.mas_left).offset(-offsetx);
             make.height.mas_equalTo(44);
             make.width.mas_equalTo(73);
-            //make.bottom.equalTo(_pageIndexNumberStepper.mas_top).offset(-offsetx);
         }];
         [_fontSizeText mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
             make.left.equalTo(_fontSizeLabel.mas_right).offset(offsetx);
-            //make.right.equalTo(self.mas_left).offset(-offsetx);
             make.height.mas_equalTo(44);
             make.width.mas_equalTo(93);
         }];
@@ -158,43 +146,31 @@
         _pageIndexLabel = [[UILabel alloc] init];
         [_pageIndexLabel setText:@"Page Start"];
         _pageIndexLabel.font = [UIFont boldSystemFontOfSize:14];
-        _pageIndexNumberLabel = [[UILabel alloc] init];
-        _pageIndexNumberLabel.backgroundColor = [UIColor whiteColor];
-        _pageIndexNumberLabel.textColor = [UIColor blackColor];
-        _pageIndexNumberLabel.textAlignment = NSTextAlignmentCenter;
+        _pageIndexNumberText = [[UITextField alloc] init];
+        _pageIndexNumberText.borderStyle = UITextBorderStyleRoundedRect;
+        _pageIndexNumberText.placeholder = @"1";
         _pageIndexNumberStepper = [[UIStepper alloc] init];
         // The step value is updated in real time as the user interacts
         _pageIndexNumberStepper.continuous = YES;
         _pageIndexNumberStepper.autorepeat = YES;
         _pageIndexNumberStepper.wraps = NO;
         _pageIndexNumberStepper.minimumValue = 1;
-        _pageIndexNumberStepper.maximumValue = 100;
+        _pageIndexNumberStepper.maximumValue = 1000;
         _pageIndexNumberStepper.stepValue    = 1;
         _pageIndexNumberStepper.value = 1;
-        [_pageIndexNumberStepper addTarget:self
-                    action:@selector(stepperValueChanged:)
-          forControlEvents:UIControlEventValueChanged];
         [self addSubview:_pageIndexLabel];
-        [self addSubview:_pageIndexNumberLabel];
-        [self addSubview:_pageIndexNumberStepper];
+        [self addSubview:_pageIndexNumberText];
+        //[self addSubview:_pageIndexNumberStepper];
         [_pageIndexLabel mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(_pageNumberLabel.mas_bottom).offset(offsetx);
             make.left.equalTo(self.mas_left).offset(offsetx);
-            //make.right.equalTo(_pageNumberLabel.mas_left).offset(-offsetx);
             make.height.mas_equalTo(44);
-            make.width.mas_equalTo(93);
+            make.width.mas_equalTo(73);
         }];
-        [_pageIndexNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(_pageNumberText.mas_bottom).offset(offsetx);
+        [_pageIndexNumberText mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_pageNumberText.mas_bottom).offset(offsetx+5);
             make.left.equalTo(_pageIndexLabel.mas_right).offset(offsetx);
-            //make.right.equalTo(_pageIndexNumberStepper.mas_right).offset(-offsetx);
-            make.height.mas_equalTo(44);
-            make.width.mas_equalTo(93);
-        }];
-        [_pageIndexNumberStepper mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(_fontSizeLabel.mas_bottom).offset(offsetx);
-            make.left.equalTo(_pageIndexNumberLabel.mas_right).offset(offsetx);
-            make.height.mas_equalTo(44);
+            make.height.mas_equalTo(33);
             make.width.mas_equalTo(93);
         }];
         self.backgroundColor = [UIColor whiteColor];
@@ -202,17 +178,16 @@
     return  self;
 }
 
-- (void)stepperValueChanged:(UIStepper *)pageIndexNumberStepper {
-    int pageIndex = (int)pageIndexNumberStepper.value;
-    NSString *value = [NSString stringWithFormat:@"%d",pageIndex];
-    self.pageIndexLabel.font = [UIFont boldSystemFontOfSize:12.0];
-    self.pageIndexNumberLabel.text = value;
-}
-
 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
     [_pageNumberText resignFirstResponder];
     return YES;
 }
 
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
+    NSString *number = kNumber;
+    NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
+    return [numberPre evaluateWithObject:string];
+}
+
 @end
 

+ 3 - 1
PDFViewer/Controller/CPDFHeaderFooterDeleteController.m

@@ -19,7 +19,9 @@
     [super viewDidLoad];
     UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Delete Page Number" message:@"Are you sure delete all pages number" preferredStyle:UIAlertControllerStyleAlert];
     UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            NSLog(@"OK Action");
+        NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"delete", nil];
+        NSNotification *notification = [NSNotification notificationWithName:@"deleteHeaderFooter" object:nil userInfo:dict];
+        [[NSNotificationCenter defaultCenter] postNotification:notification];
         }];
     UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
         NSLog(@"Cancel Action");

+ 2 - 2
PDFViewer/Controller/CPDFHeaderFooterSettingController.h

@@ -9,7 +9,7 @@
 #import <ComPDFKit/ComPDFKit.h>
 #import "CPDFHeaderFooterAddController.h"
 #import "CPDFHeaderFooterDeleteController.h"
-#import "CPDFModelData.h"
+#import "CPDFHeaderFooterModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,strong) CPDFDocument *document;
 @property (nonatomic,strong) CPDFView *pdfView;
 @property (nonatomic,strong) CPDFHeaderFooterAddController *headerFooterControl;
-@property (nonatomic,strong) CPDFModelData *modelData;
+@property (nonatomic,strong) CPDFHeaderFooterModel *modelData;
 
 - (id)initWithIamge:(UIImage *)image WithSize:(CGSize)size WithDocument:(CPDFDocument *)docment WithView:(CPDFView *) pdfView;
 

+ 0 - 8
PDFViewer/Controller/CPDFHeaderFooterSettingController.m

@@ -50,14 +50,6 @@
     [alertController addAction:deleteHeaderfooterAction];
     [alertController addAction:cancelAction];
     [self presentViewController:alertController animated:YES completion:nil];
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getModel:) name:@"changeModel" object:nil];
-}
-
-- (void)getModel:(NSNotification *)text {
-    self.modelData = self.headerFooterControl.modelData;
-    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:self.modelData,@"model", nil];
-    NSNotification *notification = [NSNotification notificationWithName:@"getSettingModel" object:nil userInfo:dict];
-    [[NSNotificationCenter defaultCenter] postNotification:notification];
 }
 
 @end

+ 1 - 1
PDFViewer/Controller/CPDFViewController.h

@@ -6,7 +6,7 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "CPDFModelData.h"
+#import "CPDFHeaderFooterModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 63 - 10
PDFViewer/Controller/CPDFViewController.m

@@ -12,16 +12,20 @@
 #import "CPDFHeaderFooterDeleteController.h"
 #import "CPDFBatesSettingController.h"
 #import "CPDFHeaderFooterSettingController.h"
+#import "CPDFBatesModel.h"
 
 @interface CPDFViewController () <UIActionSheetDelegate>
 
 @property (nonatomic,strong) CPDFKitPlatformImage *image;
 @property (nonatomic,assign) CGSize size;
 @property (nonatomic,strong) CPDFHeaderFooter *headerFooter;
+@property (nonatomic,strong) CPDFBates *bates;
 @property (nonatomic,strong) CPDFDocument *document;
 @property (nonatomic,strong) CPDFView *pdfView;
 @property (nonatomic,strong) CPDFHeaderFooterSettingController *headefooterControl;
-@property (nonatomic,strong) CPDFModelData *modelData;
+@property (nonatomic,strong) CPDFHeaderFooterModel *modelData;
+@property (nonatomic,strong) CPDFBatesModel *modelBatesData;
+@property (nonatomic,strong) CPDFBatesSettingController *batesBatesControl;
 
 @end
 
@@ -71,10 +75,10 @@
        }];
     //seeting bates action
     UIAlertAction *settingBatesAction = [UIAlertAction actionWithTitle:@"Setting Bates" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        CPDFBatesSettingController *batesBatesControl = [[CPDFBatesSettingController alloc] initWithIamge:self.image WithSize:self.size];
-        [self addChildViewController:batesBatesControl];
-        [self.view addSubview:batesBatesControl.view];
-        [self.navigationController pushViewController:batesBatesControl animated:NO];
+        self.batesBatesControl = [[CPDFBatesSettingController alloc] initWithIamge:self.image WithSize:self.size];
+        [self addChildViewController:self.batesBatesControl];
+        [self.view addSubview:self.batesBatesControl.view];
+        [self.navigationController pushViewController:self.batesBatesControl animated:NO];
        }];
     //cancel action
     UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
@@ -87,14 +91,20 @@
     [self presentViewController:alertController animated:YES completion:nil];
     self.pdfView = self.headefooterControl.pdfView;
     [self.view addSubview:self.pdfView];
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getModel:) name:@"getSettingModel" object:nil];
+    
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getHeaderFooterModel:) name:@"getAddHeaderFooterModel" object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deleteHeaderFooter:) name:@"deleteHeaderFooter" object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getBatesMdel:) name:@"getAddBatesModel" object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deleteBates:) name:@"deleteBatesModel" object:nil];
 }
 
-- (void)getModel:(NSNotification *)text {
-    self.modelData = self.headefooterControl.modelData;
+- (void)getHeaderFooterModel:(NSNotification *)addSign {
+    self.modelData = addSign.userInfo[@"model"];
     self.headerFooter = [self.document headerFooter];
-    self.headerFooter.pageString = @"1";
-    [self.headerFooter setText:@"1" atIndex:self.modelData.fontPosition];
+    NSString *pageIndex = [NSString stringWithFormat:@"%@-%lu",self.modelData.pageStart,self.document.pageCount - 1];
+    NSLog(@"%@",self.modelData.fontText);
+    self.headerFooter.pageString = pageIndex;
+    [self.headerFooter setText:self.modelData.fontText atIndex:self.modelData.fontPosition];
     [self.headerFooter setFontSize:self.modelData.fontSize atIndex:self.modelData.fontPosition];
     [self.headerFooter setTextColor:self.modelData.fontColor atIndex:self.modelData.fontPosition];
     [self.headerFooter update];
@@ -107,4 +117,47 @@
    [self.view addSubview:_pdfView];
 }
 
+- (void)getBatesMdel:(NSNotification *)addBatesSign {
+    self.modelBatesData = addBatesSign.userInfo[@"batesModel"];
+    self.bates = [self.document bates];
+    NSString *pageIndex = [NSString stringWithFormat:@"%@-%lu",self.modelBatesData.pageStart,self.document.pageCount - 1];
+    self.bates.pageString = pageIndex;
+    [self.bates setFontName:self.modelBatesData.fontName atIndex:self.modelBatesData.fontPosition];
+    [self.bates setFontSize:self.modelBatesData.fontSize atIndex:self.modelBatesData.fontPosition];
+    [self.bates setText:self.modelBatesData.fontText atIndex:self.modelBatesData.fontPosition];
+    [self.bates setTextColor:self.modelBatesData.fontColor atIndex:self.modelBatesData.fontPosition];
+    [self.bates update];
+    NSURL *url = [NSURL fileURLWithPath:self.path];
+    [self.document writeToURL:url];
+    _document = [[CPDFDocument alloc] initWithURL:url];
+    _pdfView = [[CPDFView alloc] initWithFrame:self.view.bounds];
+    _pdfView.document = _document;
+    _pdfView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+   [self.view addSubview:_pdfView];
+}
+
+- (void)deleteHeaderFooter:(NSNotification *)deleteSign {
+    self.headerFooter = [self.document headerFooter];
+    [self.headerFooter clear];
+    NSURL *url = [NSURL fileURLWithPath:self.path];
+    [self.document writeToURL:url];
+    _document = [[CPDFDocument alloc] initWithURL:url];
+    _pdfView = [[CPDFView alloc] initWithFrame:self.view.bounds];
+    _pdfView.document = _document;
+    _pdfView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+   [self.view addSubview:_pdfView];
+}
+
+- (void)deleteBates:(NSNotification *)deleteBates {
+    self.bates = [self.document bates];
+    [self.bates clear];
+    NSURL *url = [NSURL fileURLWithPath:self.path];
+    [self.document writeToURL:url];
+    _document = [[CPDFDocument alloc] initWithURL:url];
+    _pdfView = [[CPDFView alloc] initWithFrame:self.view.bounds];
+    _pdfView.document = _document;
+    _pdfView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+   [self.view addSubview:_pdfView];
+}
+
 @end

+ 2 - 0
PDFViewer/Info.plist

@@ -49,6 +49,8 @@
 	<array>
 		<string>armv7</string>
 	</array>
+	<key>UIStatusBarStyle</key>
+	<string></string>
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>

+ 24 - 0
PDFViewer/Model/CPDFBatesModel.h

@@ -0,0 +1,24 @@
+//
+//  CPDFBatesModel.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/11/24.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFBatesModel : NSObject
+
+@property (nonatomic,strong) UIColor *fontColor;
+@property (nonatomic,assign) NSUInteger fontPosition;
+@property (nonatomic,strong) NSString *fontText;
+@property (nonatomic,strong) NSString *pageStart;
+@property (nonatomic,strong) NSString *fontName;
+@property (nonatomic,assign) CGFloat fontSize;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 12 - 0
PDFViewer/Model/CPDFBatesModel.m

@@ -0,0 +1,12 @@
+//
+//  CPDFBatesModel.m
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/11/24.
+//
+
+#import "CPDFBatesModel.h"
+
+@implementation CPDFBatesModel
+
+@end

+ 1 - 2
PDFViewer/Model/CPDFModelData.h

@@ -10,14 +10,13 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface CPDFModelData : NSObject
+@interface CPDFHeaderFooterModel : NSObject
 
 @property (nonatomic,strong) UIColor *fontColor;
 @property (nonatomic,assign) NSUInteger fontPosition;
 @property (nonatomic,assign) CGFloat fontSize;
 @property (nonatomic,strong) NSString *fontText;
 @property (nonatomic,strong) NSString *pageStart;
-@property (nonatomic,strong) NSString *fontName;
 
 @end
 

+ 2 - 2
PDFViewer/Model/CPDFModelData.m

@@ -5,8 +5,8 @@
 //  Created by kdanmobile_2 on 2022/11/21.
 //
 
-#import "CPDFModelData.h"
+#import "CPDFHeaderFooterModel.h"
 
-@implementation CPDFModelData
+@implementation CPDFHeaderFooterModel
 
 @end

+ 18 - 0
PDFViewer/Model/CPDFPageFomatModel.h

@@ -0,0 +1,18 @@
+//
+//  CPDFPageFomatModel.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/11/25.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFPageFomatModel : NSObject
+
+@property (nonatomic,strong) NSString *pageFormat;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 12 - 0
PDFViewer/Model/CPDFPageFomatModel.m

@@ -0,0 +1,12 @@
+//
+//  CPDFPageFomatModel.m
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/11/25.
+//
+
+#import "CPDFPageFomatModel.h"
+
+@implementation CPDFPageFomatModel
+
+@end

+ 2 - 2
PDFViewer/View/CPDFBatesAddView.h

@@ -9,7 +9,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface CPDFBatesAddView : UIView
+@interface CPDFBatesAddView : UIView <UITextFieldDelegate>
 
 @property (nonatomic,strong) UILabel *localLabel;
 @property (nonatomic,strong) UISegmentedControl *localSegment;
@@ -23,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,strong) UILabel *fontNameLabel;
 @property (nonatomic,strong) UITextField *fontNameText;
 @property (nonatomic,strong) UILabel *pageIndexLabel;
-@property (nonatomic,strong) UILabel *pageIndexNumberLabel;
+@property (nonatomic,strong) UITextField *pageIndexNumberText;
 @property (nonatomic,strong) UIStepper *pageIndexNumberStepper;
 
 @end

+ 121 - 43
PDFViewer/View/CPDFBatesAddView.m

@@ -6,97 +6,175 @@
 //
 
 #import "CPDFBatesAddView.h"
+#import "Masonry.h"
 
 @implementation CPDFBatesAddView
 
 - (instancetype)initWithFrame:(CGRect)frame {
     self = [super initWithFrame:frame];
-    CGFloat height = self.bounds.size.height / 15 - 35;
-    CGFloat width  = self.bounds.size.width / 4 - 10;
     CGFloat offsetx = 3.5;
     if (self) {
         //Page number location
-        _localLabel = [[UILabel alloc] initWithFrame:CGRectMake(offsetx, offsetx, width * 2, height)];
+        _localLabel = [[UILabel alloc] init];
         [_localLabel setText:@"Page number position"];
         _localLabel.font = [UIFont boldSystemFontOfSize:12];
         NSArray *arraySegmmentL = [NSArray arrayWithObjects:@"Header",@"Footer", nil];
         _localSegment = [[UISegmentedControl alloc] initWithItems:arraySegmmentL];
-        _localSegment.frame = CGRectMake(3.5, height + 2 * offsetx, self.bounds.size.width - 8 * offsetx, height * 2);
         [self addSubview:_localLabel];
         [self addSubview:_localSegment];
+        [_localLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.mas_top).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(offsetx);
+            make.width.mas_equalTo(130);
+            make.height.mas_equalTo(22);
+        }];
+        [_localSegment mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_localLabel.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(4 * offsetx);
+            make.width.mas_equalTo(364);
+            make.height.mas_equalTo(44);
+        }];
+        
+        
         //alignment
-        _alignmentLabel = [[UILabel alloc] initWithFrame:CGRectMake(3.5, 3 * height + 3 * offsetx, width, height)];
+        _alignmentLabel = [[UILabel alloc] init];
         [_alignmentLabel setText:@"alignment"];
         _alignmentLabel.font = [UIFont boldSystemFontOfSize:12];
         NSArray *arraySegmmentA = [NSArray arrayWithObjects:@"Left",@"Center",@"Right", nil];
         _aligbmentSegment = [[UISegmentedControl alloc] initWithItems:arraySegmmentA];
-        _aligbmentSegment.frame = CGRectMake(3.5, 4 * height + 4 * offsetx, self.bounds.size.width - 8 * offsetx, height * 2);
         [self addSubview:_alignmentLabel];
         [self addSubview:_aligbmentSegment];
+        [_alignmentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_localSegment.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(offsetx);
+            make.width.mas_equalTo(100);
+            make.height.mas_equalTo(22);
+        }];
+        [_aligbmentSegment mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_alignmentLabel.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(4 * offsetx);
+            make.width.mas_equalTo(364);
+            make.height.mas_equalTo(44);
+        }];
+        
+        
         //font color
-        _colorLabel = [[UILabel alloc] initWithFrame:CGRectMake(3.5, 6 * height + 5 * offsetx, width, height)];
+        _colorLabel = [[UILabel alloc] init];
         [_colorLabel setText:@"Font Color"];
         _colorLabel.font = [UIFont boldSystemFontOfSize:12];
-        _colerImage = [[UIImageView alloc] initWithFrame:CGRectMake(3.5,7 * height + 6 * offsetx , self.bounds.size.width, 2*height)];
+        _colerImage = [[UIImageView alloc] init];
+        CALayer *layer = [_colerImage layer];
+        layer.borderColor = [[UIColor blackColor] CGColor];
+        layer.borderWidth = 0.5f;
         _colerImage.image = [UIImage imageNamed:@"text_color_bar"];
-        _colorSlider = [[UISlider alloc] initWithFrame:CGRectMake(3.5,9 * height + 7 * offsetx , self.bounds.size.width - 8 * offsetx, 2 * height)];
+        _colorSlider = [[UISlider alloc] init];
         _colorSlider.minimumValue = 0;
-        _colorSlider.maximumValue = 90;
+        _colorSlider.maximumValue = 100;
         _colorSlider.value = 5;
         [self addSubview:_colorLabel];
         [self addSubview:_colorSlider];
         [self addSubview:_colerImage];
+        [_colorLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_aligbmentSegment.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(offsetx);
+            make.width.mas_equalTo(100);
+            make.height.mas_equalTo(22);
+        }];
+        [_colerImage mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_colorLabel.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(4 * offsetx);
+            make.width.mas_equalTo(364);
+            make.height.mas_equalTo(44);
+        }];
+        [_colorSlider mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_colerImage.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(4 * offsetx);
+            make.width.mas_equalTo(364);
+            make.height.mas_equalTo(44);
+        }];
+        
+        
         //page number
-        _pageNumberLabel = [[UILabel alloc] initWithFrame:CGRectMake(3.5, 11 * height + 8 * offsetx, width + offsetx, height * 2)];
+        _pageNumberLabel = [[UILabel alloc] init];
         [_pageNumberLabel setText:@"Page Text"];
         _pageNumberLabel.font = [UIFont boldSystemFontOfSize:14];
-        _pageNumberText = [[UITextField alloc] initWithFrame:CGRectMake(2 * offsetx + width, 11 * height + 8 * offsetx, width - offsetx, height * 2)];
+        _pageNumberText = [[UITextField alloc] init];
         _pageNumberText.borderStyle = UITextBorderStyleRoundedRect;
+        _pageNumberText.placeholder = @"text";
         [self addSubview:_pageNumberLabel];
         [self addSubview:_pageNumberText];
-        //font size
-        _fontNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(3 * offsetx + width * 2, 11 * height + 8 * offsetx, width, height * 2)];
+        [_pageNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(offsetx);
+            make.height.mas_equalTo(44);
+            make.width.mas_equalTo(73);
+        }];
+        [_pageNumberText mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
+            make.left.equalTo(_pageNumberLabel.mas_right).offset(offsetx);
+            make.height.mas_equalTo(44);
+            make.width.mas_equalTo(93);
+        }];
+        
+        
+        //font Name
+        _fontNameLabel = [[UILabel alloc] init];
         [_fontNameLabel setText:@"Font Name"];
         _fontNameLabel.font = [UIFont boldSystemFontOfSize:14];
-        _fontNameText = [[UITextField alloc] initWithFrame:CGRectMake(2 * offsetx + 3 * width, 11 * height + 8 * offsetx, width, height * 2)];
+        _fontNameText = [[UITextField alloc] init];
         _fontNameText.borderStyle = UITextBorderStyleRoundedRect;
+        _fontNameText.placeholder = @"Helvetica";
+        _fontNameText.keyboardType = UIKeyboardTypeDefault;
+        _fontNameText.delegate = self;
         [self addSubview:_fontNameLabel];
         [self addSubview:_fontNameText];
-        //font star
-        _pageIndexLabel = [[UILabel alloc] initWithFrame:CGRectMake(offsetx, 13 * height + 9 * offsetx, width, height * 2)];
-        [_pageIndexLabel setText:@"Page Star"];
+        [_fontNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
+            make.left.equalTo(_pageNumberText.mas_right).offset(offsetx + 20);
+            make.height.mas_equalTo(44);
+            make.width.mas_equalTo(73);
+        }];
+        [_fontNameText mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_colorSlider.mas_bottom).offset(offsetx);
+            make.left.equalTo(_fontNameLabel.mas_right).offset(offsetx);
+            make.height.mas_equalTo(44);
+            make.width.mas_equalTo(93);
+        }];
+        
+        
+        //font index
+        _pageIndexLabel = [[UILabel alloc] init];
+        [_pageIndexLabel setText:@"Page Start"];
         _pageIndexLabel.font = [UIFont boldSystemFontOfSize:14];
-        _pageIndexNumberLabel = [[UILabel alloc] initWithFrame:CGRectMake(offsetx + width, 13 * height + 10 * offsetx, width, height * 2)];
-        _pageIndexNumberLabel.backgroundColor = [UIColor whiteColor];
-        _pageIndexNumberLabel.textColor = [UIColor blueColor];
-        _pageIndexNumberLabel.textAlignment = NSTextAlignmentCenter;
-        _pageIndexNumberStepper = [[UIStepper alloc] initWithFrame:CGRectMake(offsetx + width * 2, 13 * height + 11 * offsetx, width, height * 2)];
+        _pageIndexNumberText = [[UITextField alloc] init];
+        _pageIndexNumberText.borderStyle = UITextBorderStyleRoundedRect;
+        _pageIndexNumberText.placeholder = @"1";
+        _pageIndexNumberStepper = [[UIStepper alloc] init];
         // The step value is updated in real time as the user interacts
-        _pageIndexNumberStepper.continuous = YES; // default = YES
-        // The user continues to press and hold, automatically increasing or decreasing
-        _pageIndexNumberStepper.autorepeat = YES; // default = YES
-        // If set to YES, the value loops between min <-> max
-        _pageIndexNumberStepper.wraps = NO; // default = NO
-        _pageIndexNumberStepper.minimumValue = 0;   // default 0
-        _pageIndexNumberStepper.maximumValue = 100; // default 100
-        _pageIndexNumberStepper.stepValue    = 1;   // default 1
+        _pageIndexNumberStepper.continuous = YES;
+        _pageIndexNumberStepper.autorepeat = YES;
+        _pageIndexNumberStepper.wraps = NO;
+        _pageIndexNumberStepper.minimumValue = 1;
+        _pageIndexNumberStepper.maximumValue = 1000;
+        _pageIndexNumberStepper.stepValue    = 1;
         _pageIndexNumberStepper.value = 1;
-        //setting Target-Action
-        [_pageIndexNumberStepper addTarget:self
-                    action:@selector(stepperValueChanged:)
-          forControlEvents:UIControlEventValueChanged];
         [self addSubview:_pageIndexLabel];
-        [self addSubview:_pageIndexNumberLabel];
-        [self addSubview:_pageIndexNumberStepper];
-        
+        [self addSubview:_pageIndexNumberText];
+        [_pageIndexLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_pageNumberLabel.mas_bottom).offset(offsetx);
+            make.left.equalTo(self.mas_left).offset(offsetx);
+            make.height.mas_equalTo(44);
+            make.width.mas_equalTo(73);
+        }];
+        [_pageIndexNumberText mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(_pageNumberText.mas_bottom).offset(offsetx+5);
+            make.left.equalTo(_pageIndexLabel.mas_right).offset(offsetx);
+            make.height.mas_equalTo(33);
+            make.width.mas_equalTo(93);
+        }];
         self.backgroundColor = [UIColor whiteColor];
     }
     return  self;
 }
 
-- (void)stepperValueChanged:(UIStepper *)pageIndexNumberStepper {
-    NSString *value = [NSString stringWithFormat:@"%f",pageIndexNumberStepper.value];
-    self.pageIndexNumberLabel.text = value;
-}
-
 @end

+ 25 - 0
PDFViewer/View/CPDFHeaderFooterTextTableView.h

@@ -0,0 +1,25 @@
+//
+//  CPDFHeaderFooterTextTableView.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/11/25.
+//
+
+#import <UIKit/UIKit.h>
+#import "Masonry.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFHeaderFooterTextTableView : UIView 
+
+@property (nonatomic,strong) UITableView *tableView;
+@property (nonatomic,strong) UILabel *titleView;
+@property (nonatomic,strong) UIButton *okBtn;
+@property (nonatomic,strong) UIButton *cancelBtn;
+@property (nonatomic,strong) UIView * bottomView;
+@property (nonatomic,strong) UIControl *coverView;
+@property (nonatomic,strong) NSMutableArray * dataArray;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 84 - 0
PDFViewer/View/CPDFHeaderFooterTextTableView.m

@@ -0,0 +1,84 @@
+//
+//  CPDFHeaderFooterTextTableView.m
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/11/25.
+//
+
+#import "CPDFHeaderFooterTextTableView.h"
+
+@implementation CPDFHeaderFooterTextTableView
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        _tableView.rowHeight = 33;
+        [self addSubview:_tableView];
+        [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.mas_top).offset(33);
+            make.left.equalTo(self.mas_left);
+            make.right.equalTo(self.mas_right);
+            make.bottom.equalTo(self.mas_bottom).offset(-44);
+        }];
+        
+        //title
+        _titleView = [[UILabel alloc] init];
+        _titleView.font = [UIFont systemFontOfSize:12.0f];
+        _titleView.textColor = [UIColor blackColor];
+        _titleView.backgroundColor = [UIColor systemBlueColor];
+        _titleView.text = @"Page Format";
+        _titleView.textAlignment = NSTextAlignmentCenter;
+        _titleView.textColor = [UIColor whiteColor];
+        [self addSubview:_titleView];
+        [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.mas_top);
+            make.left.equalTo(self.mas_left);
+            make.right.equalTo(self.mas_right);
+            make.height.mas_equalTo(33);
+        }];
+        
+        
+        //view button at the bottom
+        _bottomView = [[UIView alloc] init];
+        _bottomView.backgroundColor = [UIColor whiteColor];
+        [self addSubview:_bottomView];
+        [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.tableView.mas_bottom);
+            make.left.equalTo(self.mas_left);
+            make.right.equalTo(self.mas_right);
+            make.height.mas_equalTo(44);
+        }];
+        
+        //OK
+        _okBtn = [[UIButton alloc] init];
+        [_okBtn setTitle:@"OK" forState:UIControlStateNormal];
+        _okBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+        _okBtn.backgroundColor = [UIColor systemBlueColor];
+        //[_okBtn addTarget:self action:@selector(checkItem) forControlEvents:UIControlEventTouchUpInside];
+        [self.bottomView addSubview:_okBtn];
+        [self.okBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.bottomView.mas_top).offset(6);
+            make.right.equalTo(self.bottomView.mas_right).offset(-60);
+            make.height.mas_equalTo(33);
+            make.width.mas_equalTo(40);
+        }];
+        
+        //Cancel
+        _cancelBtn = [[UIButton alloc] initWithFrame:CGRectZero];
+        [_cancelBtn setTitle:@"Cancel" forState:UIControlStateNormal];
+        _cancelBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+        _cancelBtn.backgroundColor = [UIColor systemBlueColor];
+        //[_cancelBtn addTarget:self action:@selector(dismiss) forControlEvents:UIControlEventTouchUpInside];
+        [self.bottomView addSubview:_cancelBtn];
+        [self.okBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.bottomView.mas_top).offset(6);
+            make.right.equalTo(self.bottomView.mas_right).offset(-10);
+            make.height.mas_equalTo(33);
+            make.width.mas_equalTo(40);
+        }];
+    }
+    return self;
+}
+
+@end