Browse Source

PDFView(ios) - 页眉页脚待最后优化

yangliuhua 2 years ago
parent
commit
ac12dd2352
30 changed files with 919 additions and 412 deletions
  1. 59 19
      PDFViewer.xcodeproj/project.pbxproj
  2. 8 0
      PDFViewer.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  3. BIN
      PDFViewer.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile_2.xcuserdatad/UserInterfaceState.xcuserstate
  4. 14 0
      PDFViewer.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile_2.xcuserdatad/WorkspaceSettings.xcsettings
  5. 18 2
      PDFViewer.xcodeproj/xcuserdata/kdanmobile_2.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  6. 48 0
      PDFViewer/Controller/CPDFAddViewController.h
  7. 273 0
      PDFViewer/Controller/CPDFAddViewController.m
  8. 32 0
      PDFViewer/Controller/CPDFAddViewControllerHeader.h
  9. 2 1
      PDFViewer/Controller/CPDFBatesAddViewController.h
  10. 97 31
      PDFViewer/Controller/CPDFBatesAddViewController.m
  11. 2 48
      PDFViewer/Controller/CPDFHeaderFooterAddController.h
  12. 98 224
      PDFViewer/Controller/CPDFHeaderFooterAddController.m
  13. 10 1
      PDFViewer/Controller/CPDFHeaderFooterAddView.m
  14. 3 3
      PDFViewer/Controller/CPDFListController.m
  15. 80 55
      PDFViewer/Controller/CPDFViewController.m
  16. 2 0
      PDFViewer/Info.plist
  17. 0 0
      PDFViewer/Model/CPDFHeaderFooterModel.h
  18. 0 0
      PDFViewer/Model/CPDFHeaderFooterModel.m
  19. 0 0
      PDFViewer/Model/CPDFModel.h
  20. 0 0
      PDFViewer/Model/CPDFModel.m
  21. 11 1
      PDFViewer/View/CPDFBatesAddView.m
  22. 22 0
      PDFViewer/View/CPDFHeadView.h
  23. 49 0
      PDFViewer/View/CPDFHeadView.m
  24. 0 2
      PDFViewer/View/CPDFHeaderFooterTextTableView.h
  25. 11 25
      PDFViewer/View/CPDFHeaderFooterTextTableView.m
  26. 23 0
      PDFViewer/View/CPDFSettingView.h
  27. 57 0
      PDFViewer/View/CPDFSettingView.m
  28. 0 0
      PDFViewer/View/PDFViewer/View/Image/add_newpage01.png
  29. BIN
      PDFViewer/View/PDFViewer/View/Image/btn_frontpage.png
  30. 0 0
      PDFViewer/View/PDFViewer/View/Image/pageedit_delete.png

+ 59 - 19
PDFViewer.xcodeproj/project.pbxproj

@@ -7,18 +7,23 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		C94D47932934A961008983FB /* ComPDFKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C94D47912934808C008983FB /* ComPDFKit.xcframework */; };
-		C94D47942934A961008983FB /* ComPDFKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C94D47912934808C008983FB /* ComPDFKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		C96D13932924793800CC92C7 /* btn_more.png in Resources */ = {isa = PBXBuildFile; fileRef = C96D13922924793800CC92C7 /* btn_more.png */; };
 		C96D13962924DD7E00CC92C7 /* CPDFHeaderFooterAddController.m in Sources */ = {isa = PBXBuildFile; fileRef = C96D13952924DD7E00CC92C7 /* CPDFHeaderFooterAddController.m */; };
 		C96D13992924E09300CC92C7 /* CPDFHeaderFooterAddView.m in Sources */ = {isa = PBXBuildFile; fileRef = C96D13982924E09300CC92C7 /* CPDFHeaderFooterAddView.m */; };
+		C9743BFE29481A9700E94840 /* CPDFSettingView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9743BFD29481A9700E94840 /* CPDFSettingView.m */; };
+		C9743C0029481F0F00E94840 /* add_newpage01.png in Resources */ = {isa = PBXBuildFile; fileRef = C9743BFF29481F0F00E94840 /* add_newpage01.png */; };
+		C9743C0229481F2600E94840 /* pageedit_delete.png in Resources */ = {isa = PBXBuildFile; fileRef = C9743C0129481F2600E94840 /* pageedit_delete.png */; };
 		C993B8FB2925E14000D8F474 /* text_color_bar.png in Resources */ = {isa = PBXBuildFile; fileRef = C993B8FA2925E14000D8F474 /* text_color_bar.png */; };
-		C993B9042926541D00D8F474 /* add_newpage01.png in Resources */ = {isa = PBXBuildFile; fileRef = C993B9032926541D00D8F474 /* add_newpage01.png */; };
-		C993B9062926543500D8F474 /* pageedit_delete.png in Resources */ = {isa = PBXBuildFile; fileRef = C993B9052926543500D8F474 /* pageedit_delete.png */; };
 		C993B90C29271FCA00D8F474 /* CPDFBatesAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B90B29271FCA00D8F474 /* CPDFBatesAddViewController.m */; };
 		C993B90F2927200400D8F474 /* CPDFBatesAddView.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B90E2927200400D8F474 /* CPDFBatesAddView.m */; };
 		C993B918292B5BC500D8F474 /* CPDFHeaderFooterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C993B917292B5BC500D8F474 /* CPDFHeaderFooterModel.m */; };
 		C9AF3143293E032500CE0313 /* CPDFAddView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF3142293E032500CE0313 /* CPDFAddView.m */; };
+		C9AF319229403A2A00CE0313 /* btn_frontpage.png in Resources */ = {isa = PBXBuildFile; fileRef = C9AF319129403A2A00CE0313 /* btn_frontpage.png */; };
+		C9AF31952940AE0B00CE0313 /* CPDFHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF31942940AE0B00CE0313 /* CPDFHeadView.m */; };
+		C9B7639D2940B71600D25041 /* CPDFAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C9B7639C2940B71600D25041 /* CPDFAddViewController.m */; };
+		C9B764A22946011700D25041 /* ComPDFKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9B764A0294600E400D25041 /* ComPDFKit.xcframework */; };
+		C9B764A32946011700D25041 /* ComPDFKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C9B764A0294600E400D25041 /* ComPDFKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		C9B764A5294601C700D25041 /* ComPDFKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9B764A0294600E400D25041 /* ComPDFKit.xcframework */; };
 		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 */; };
@@ -49,7 +54,7 @@
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
-				C94D47942934A961008983FB /* ComPDFKit.xcframework in Embed Frameworks */,
+				C9B764A32946011700D25041 /* ComPDFKit.xcframework in Embed Frameworks */,
 			);
 			name = "Embed Frameworks";
 			runOnlyForDeploymentPostprocessing = 0;
@@ -57,15 +62,16 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
-		C94D47912934808C008983FB /* ComPDFKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = ComPDFKit.xcframework; sourceTree = "<group>"; };
 		C96D13922924793800CC92C7 /* btn_more.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_more.png; sourceTree = "<group>"; };
 		C96D13942924DD7E00CC92C7 /* CPDFHeaderFooterAddController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFHeaderFooterAddController.h; sourceTree = "<group>"; };
 		C96D13952924DD7E00CC92C7 /* CPDFHeaderFooterAddController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFHeaderFooterAddController.m; sourceTree = "<group>"; };
 		C96D13972924E09300CC92C7 /* CPDFHeaderFooterAddView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CPDFHeaderFooterAddView.h; path = PDFViewer/Controller/CPDFHeaderFooterAddView.h; sourceTree = SOURCE_ROOT; };
 		C96D13982924E09300CC92C7 /* CPDFHeaderFooterAddView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CPDFHeaderFooterAddView.m; path = PDFViewer/Controller/CPDFHeaderFooterAddView.m; sourceTree = SOURCE_ROOT; };
+		C9743BFC29481A9700E94840 /* CPDFSettingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFSettingView.h; sourceTree = "<group>"; };
+		C9743BFD29481A9700E94840 /* CPDFSettingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFSettingView.m; sourceTree = "<group>"; };
+		C9743BFF29481F0F00E94840 /* add_newpage01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_newpage01.png; sourceTree = "<group>"; };
+		C9743C0129481F2600E94840 /* pageedit_delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pageedit_delete.png; sourceTree = "<group>"; };
 		C993B8FA2925E14000D8F474 /* text_color_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_color_bar.png; sourceTree = "<group>"; };
-		C993B9032926541D00D8F474 /* add_newpage01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_newpage01.png; sourceTree = "<group>"; };
-		C993B9052926543500D8F474 /* pageedit_delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pageedit_delete.png; sourceTree = "<group>"; };
 		C993B90A29271FCA00D8F474 /* CPDFBatesAddViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFBatesAddViewController.h; sourceTree = "<group>"; };
 		C993B90B29271FCA00D8F474 /* CPDFBatesAddViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFBatesAddViewController.m; sourceTree = "<group>"; };
 		C993B90D2927200400D8F474 /* CPDFBatesAddView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFBatesAddView.h; sourceTree = "<group>"; };
@@ -74,6 +80,13 @@
 		C993B917292B5BC500D8F474 /* CPDFHeaderFooterModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFHeaderFooterModel.m; sourceTree = "<group>"; };
 		C9AF3141293E032500CE0313 /* CPDFAddView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFAddView.h; sourceTree = "<group>"; };
 		C9AF3142293E032500CE0313 /* CPDFAddView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFAddView.m; sourceTree = "<group>"; };
+		C9AF319129403A2A00CE0313 /* btn_frontpage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_frontpage.png; sourceTree = "<group>"; };
+		C9AF31932940AE0B00CE0313 /* CPDFHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFHeadView.h; sourceTree = "<group>"; };
+		C9AF31942940AE0B00CE0313 /* CPDFHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFHeadView.m; sourceTree = "<group>"; };
+		C9B7639B2940B71600D25041 /* CPDFAddViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFAddViewController.h; sourceTree = "<group>"; };
+		C9B7639C2940B71600D25041 /* CPDFAddViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPDFAddViewController.m; sourceTree = "<group>"; };
+		C9B763A22941808500D25041 /* CPDFAddViewControllerHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPDFAddViewControllerHeader.h; sourceTree = "<group>"; };
+		C9B764A0294600E400D25041 /* ComPDFKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = ComPDFKit.xcframework; 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>"; };
@@ -126,7 +139,8 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				C94D47932934A961008983FB /* ComPDFKit.xcframework in Frameworks */,
+				C9B764A22946011700D25041 /* ComPDFKit.xcframework in Frameworks */,
+				C9B764A5294601C700D25041 /* ComPDFKit.xcframework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -136,9 +150,7 @@
 		C96D13912924791E00CC92C7 /* Images */ = {
 			isa = PBXGroup;
 			children = (
-				C993B9032926541D00D8F474 /* add_newpage01.png */,
 				C96D13922924793800CC92C7 /* btn_more.png */,
-				C993B9052926543500D8F474 /* pageedit_delete.png */,
 			);
 			path = Images;
 			sourceTree = "<group>";
@@ -147,11 +159,21 @@
 			isa = PBXGroup;
 			children = (
 				C993B8FA2925E14000D8F474 /* text_color_bar.png */,
+				C9743BFF29481F0F00E94840 /* add_newpage01.png */,
+				C9743C0129481F2600E94840 /* pageedit_delete.png */,
+				C9AF319129403A2A00CE0313 /* btn_frontpage.png */,
 			);
 			name = Image;
 			path = PDFViewer/View/Image;
 			sourceTree = "<group>";
 		};
+		C9B764A4294601C700D25041 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 		C9E65145292CBBDE001B2C9D /* Masonry */ = {
 			isa = PBXGroup;
 			children = (
@@ -187,9 +209,10 @@
 		EC62978029220F8300D339EE = {
 			isa = PBXGroup;
 			children = (
-				C94D47912934808C008983FB /* ComPDFKit.xcframework */,
+				C9B764A0294600E400D25041 /* ComPDFKit.xcframework */,
 				EC62978B29220F8300D339EE /* PDFViewer */,
 				EC62978A29220F8300D339EE /* Products */,
+				C9B764A4294601C700D25041 /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -206,6 +229,7 @@
 			children = (
 				C9E65145292CBBDE001B2C9D /* Masonry */,
 				EC6297B52922393F00D339EE /* Controller */,
+				EC6297AD29222D3100D339EE /* Model */,
 				EC6297AE29222D4400D339EE /* View */,
 				EC62978C29220F8300D339EE /* AppDelegate.h */,
 				EC62978D29220F8300D339EE /* AppDelegate.m */,
@@ -237,6 +261,8 @@
 			isa = PBXGroup;
 			children = (
 				C993B8F92925E12B00D8F474 /* Image */,
+				C9AF31932940AE0B00CE0313 /* CPDFHeadView.h */,
+				C9AF31942940AE0B00CE0313 /* CPDFHeadView.m */,
 				C96D13972924E09300CC92C7 /* CPDFHeaderFooterAddView.h */,
 				C96D13982924E09300CC92C7 /* CPDFHeaderFooterAddView.m */,
 				C993B90D2927200400D8F474 /* CPDFBatesAddView.h */,
@@ -245,6 +271,8 @@
 				C9E6516F29306274001B2C9D /* CPDFHeaderFooterTextTableView.m */,
 				C9AF3141293E032500CE0313 /* CPDFAddView.h */,
 				C9AF3142293E032500CE0313 /* CPDFAddView.m */,
+				C9743BFC29481A9700E94840 /* CPDFSettingView.h */,
+				C9743BFD29481A9700E94840 /* CPDFSettingView.m */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -261,7 +289,9 @@
 				C96D13952924DD7E00CC92C7 /* CPDFHeaderFooterAddController.m */,
 				C993B90A29271FCA00D8F474 /* CPDFBatesAddViewController.h */,
 				C993B90B29271FCA00D8F474 /* CPDFBatesAddViewController.m */,
-				EC6297AD29222D3100D339EE /* Model */,
+				C9B7639B2940B71600D25041 /* CPDFAddViewController.h */,
+				C9B7639C2940B71600D25041 /* CPDFAddViewController.m */,
+				C9B763A22941808500D25041 /* CPDFAddViewControllerHeader.h */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -325,9 +355,10 @@
 			files = (
 				EC62979C29220F8400D339EE /* LaunchScreen.storyboard in Resources */,
 				C96D13932924793800CC92C7 /* btn_more.png in Resources */,
-				C993B9042926541D00D8F474 /* add_newpage01.png in Resources */,
 				EC62979929220F8400D339EE /* Assets.xcassets in Resources */,
-				C993B9062926543500D8F474 /* pageedit_delete.png in Resources */,
+				C9743C0229481F2600E94840 /* pageedit_delete.png in Resources */,
+				C9743C0029481F0F00E94840 /* add_newpage01.png in Resources */,
+				C9AF319229403A2A00CE0313 /* btn_frontpage.png in Resources */,
 				C993B8FB2925E14000D8F474 /* text_color_bar.png in Resources */,
 				EC62979729220F8300D339EE /* Main.storyboard in Resources */,
 			);
@@ -351,8 +382,11 @@
 				C9AF3143293E032500CE0313 /* CPDFAddView.m in Sources */,
 				C9E65163292CBC31001B2C9D /* MASViewAttribute.m in Sources */,
 				C9E65165292CBC31001B2C9D /* MASConstraintMaker.m in Sources */,
+				C9B7639D2940B71600D25041 /* CPDFAddViewController.m in Sources */,
 				C9E65162292CBC31001B2C9D /* View+MASAdditions.m in Sources */,
 				C9E65161292CBC31001B2C9D /* NSLayoutConstraint+MASDebugAdditions.m in Sources */,
+				C9AF31952940AE0B00CE0313 /* CPDFHeadView.m in Sources */,
+				C9743BFE29481A9700E94840 /* CPDFSettingView.m in Sources */,
 				C993B90C29271FCA00D8F474 /* CPDFBatesAddViewController.m in Sources */,
 				C9E65166292CBC31001B2C9D /* ViewController+MASAdditions.m in Sources */,
 				C9E65160292CBC31001B2C9D /* MASViewConstraint.m in Sources */,
@@ -424,6 +458,7 @@
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				DEBUG_INFORMATION_FORMAT = dwarf;
+				DEVELOPMENT_TEAM = 6288D8MU8G;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				ENABLE_TESTABILITY = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -444,7 +479,9 @@
 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
 				MTL_FAST_MATH = YES;
 				ONLY_ACTIVE_ARCH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = "                    ";
 				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
 			};
 			name = Debug;
 		};
@@ -483,6 +520,7 @@
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DEVELOPMENT_TEAM = 6288D8MU8G;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -496,6 +534,8 @@
 				IPHONEOS_DEPLOYMENT_TARGET = 14.4;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = "                    ";
 				SDKROOT = iphoneos;
 				VALIDATE_PRODUCT = YES;
 			};
@@ -509,7 +549,7 @@
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 6288D8MU8G;
-				EXCLUDED_ARCHS = arm64;
+				EXCLUDED_ARCHS = "arm64,x86_64";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)",
@@ -520,7 +560,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.0;
+				MARKETING_VERSION = 1.0.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.pdfviewer;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				TARGETED_DEVICE_FAMILY = "1,2";
@@ -535,7 +575,7 @@
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 6288D8MU8G;
-				EXCLUDED_ARCHS = arm64;
+				EXCLUDED_ARCHS = "arm64,x86_64";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)",
@@ -546,7 +586,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.0;
+				MARKETING_VERSION = 1.0.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.pdfviewer;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				TARGETED_DEVICE_FAMILY = "1,2";

+ 8 - 0
PDFViewer.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>PreviewsEnabled</key>
+	<false/>
+</dict>
+</plist>

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


+ 14 - 0
PDFViewer.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile_2.xcuserdatad/WorkspaceSettings.xcsettings

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>BuildLocationStyle</key>
+	<string>UseAppPreferences</string>
+	<key>CustomBuildLocationType</key>
+	<string>RelativeToDerivedData</string>
+	<key>DerivedDataLocationStyle</key>
+	<string>Default</string>
+	<key>ShowSharedSchemesAutomaticallyEnabled</key>
+	<true/>
+</dict>
+</plist>

+ 18 - 2
PDFViewer.xcodeproj/xcuserdata/kdanmobile_2.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -78,11 +78,27 @@
             filePath = "PDFViewer/Controller/CPDFBatesAddViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "161"
-            endingLineNumber = "161"
+            startingLineNumber = "201"
+            endingLineNumber = "201"
             landmarkName = "-changeText:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "9341B525-42AB-4C85-A778-4451F71B6AA3"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDFViewer/Controller/CPDFViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "40"
+            endingLineNumber = "40"
+            landmarkName = "-viewDidLoad"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 48 - 0
PDFViewer/Controller/CPDFAddViewController.h

@@ -0,0 +1,48 @@
+//
+//  CPDFAddViewController.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/7.
+//
+
+#import <UIKit/UIKit.h>
+#import "CPDFHeaderFooterModel.h"
+#import "CPDFHeadView.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+#define kFormat @"^[ ]+$"
+
+typedef enum CGLocation {
+    kHeader = 0,
+    kFooter,
+}CGLocation;
+
+typedef enum CGAligment {
+    kLeft = 0,
+    kCenter,
+    kRinght,
+}CGAligment;
+
+typedef struct RecPosition {
+    CGLocation location;
+    CGAligment aligment;
+}RecPosition;
+
+@protocol CPDFModelDataDelegate <NSObject>
+
+@optional
+- (void)changeHeaderFooterModelData:(CPDFHeaderFooterModel *)modelData;
+- (void)changBatesModelData:(CPDFHeaderFooterModel *)modelData;
+
+@end
+
+@interface CPDFAddViewController : UIViewController
+
+- (id)initWithImage:(UIImage *)image;
+
+@property (nonatomic,weak) id<CPDFModelDataDelegate> delegate;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 273 - 0
PDFViewer/Controller/CPDFAddViewController.m

@@ -0,0 +1,273 @@
+//
+//  CPDFAddViewController.m
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/7.
+//
+
+#import "CPDFAddViewController.h"
+#import "CPDFAddViewControllerHeader.h"
+#import "CPDFAddView.h"
+
+@interface CPDFAddViewController ()
+
+@property (nonatomic,strong) CPDFAddView *buttonView;
+
+@end
+
+@implementation CPDFAddViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self initNavigation];
+    
+    // Initialize header view
+    [self initHeadView];
+    
+    // Initialize model
+    [self initModel];
+    
+    // Add view
+    [self initBttonmView];
+    
+    // UI event
+    [self initBasicEvent];
+}
+
+#pragma mark - Initializers
+
+- (void)initNavigation {
+    self.navigationItem.title = @"Add Page Number";
+    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:)];
+}
+
+- (id)initWithImage:(UIImage *)image {
+    self = [super init];
+    if (self) {
+        _image = image;
+    }
+    return self;
+}
+
+- (void)initModel {
+    _modelData = [[CPDFHeaderFooterModel alloc] init];
+    _modelData.fontSize = 18.0;
+    _modelData.fontSelcet = 0;
+    _modelData.fontPosition = 0;
+    _modelData.pageStart = @"1";
+}
+
+- (void)initHeadView {
+    _headView = [[CPDFHeadView alloc] init];
+    [_headView setImage:self.image];
+    [self.view addSubview:_headView];
+
+    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
+        [self.headView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset((393 / 2) - (self.image.size.height / 18));
+            make.left.equalTo(self.view.mas_left).offset((393 / 2) - (self.image.size.width / 18));
+            make.width.mas_equalTo(self.image.size.width / 9);
+            make.height.mas_equalTo(self.image.size.height / 9);
+        }];
+        
+    } else {
+        [self.headView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset(125);
+            make.left.equalTo(self.view.mas_left).offset((393 / 2) - (self.image.size.width / 18));
+            make.width.mas_equalTo(self.image.size.width / 9);
+            make.height.mas_equalTo(self.image.size.height / 9);
+        }];
+    }
+}
+
+- (void)initBttonmView {
+    _buttonView = [[CPDFAddView alloc] init];
+    [self.view addSubview:_buttonView];
+    
+    [self.buttonView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.headView.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);
+    }];
+    
+    self.buttonView.localSegment.selectedSegmentIndex = 0;
+    self.buttonView.aligbmentSegment.selectedSegmentIndex = 1;
+}
+
+- (void)initBasicEvent {
+    [_buttonView.localSegment addTarget:self action:@selector(changeLocation:) forControlEvents:UIControlEventValueChanged];
+    [_buttonView.aligbmentSegment addTarget:self action:@selector(changeAligbment:) forControlEvents:UIControlEventValueChanged];
+    [_buttonView.colorSlider addTarget:self action:@selector(sliderChange:) forControlEvents:UIControlEventValueChanged];
+}
+
+#pragma mark - Actions
+
+// Candel button enable
+- (void)cancelClick:(UIBarButtonItem *)btn {
+    [self.navigationController popViewControllerAnimated:YES];
+}
+
+- (void)doneClick:(UIBarButtonItem *)btn {
+    
+}
+
+#pragma mark - UI Functions
+
+// Get page start for headerfooter's Model
+- (void)changePageStart:(UITextField *)text {
+    int start = [text.text intValue];
+    self.modelData.pageStart = [NSString stringWithFormat:@"%d",start];
+    [self showPages];
+}
+
+// Get headerfoote's font size for headerfooter's Model
+- (void)changeFontSize:(UITextField *)text {
+    float size = [text.text floatValue];
+    _headView.showLabel.font = [UIFont systemFontOfSize:size / 3];
+    _modelData.fontSize = size;
+    [self showPages];
+}
+
+// Slider select color
+- (void)sliderChange:(UISlider *)slider {
+    switch ((int)slider.value / 10) {
+        case 0:
+            self.headView.showLabel.textColor = [UIColor redColor];
+            self.modelData.fontColor = [UIColor redColor];
+            break;
+        case 1:
+            self.headView.showLabel.textColor = [UIColor orangeColor];
+            self.modelData.fontColor = [UIColor orangeColor];
+            break;
+        case 2:
+            self.headView.showLabel.textColor = [UIColor colorWithRed:239.0 / 255 green:140.0 / 255 blue:133.0 / 255 alpha:1];
+            self.modelData.fontColor = [UIColor colorWithRed:239.0 / 255 green:140.0 / 255 blue:133.0 / 255 alpha:1];
+            break;
+        case 3:
+            self.headView.showLabel.textColor = [UIColor yellowColor];
+            self.modelData.fontColor = [UIColor yellowColor];;
+            break;
+        case 4:
+            self.headView.showLabel.textColor = [UIColor greenColor];
+            self.modelData.fontColor = [UIColor greenColor];
+            break;
+        case 5:
+            self.headView.showLabel.textColor = [UIColor blueColor];
+            self.modelData.fontColor = [UIColor blueColor];
+            break;
+        case 6:
+            self.headView.showLabel.textColor = [UIColor purpleColor];
+            self.modelData.fontColor = [UIColor purpleColor];
+            break;
+        case 7:
+            self.headView.showLabel.textColor = [UIColor colorWithRed:235.0 / 255 green:61.0 / 255 blue:133.0 / 255 alpha:1];
+            self.modelData.fontColor = [UIColor colorWithRed:235.0 / 255 green:61.0 / 255 blue:133.0 / 255 alpha:1];
+            break;
+        case 8:
+            self.headView.showLabel.textColor = [UIColor blackColor];
+            self.modelData.fontColor = [UIColor blackColor];
+            break;
+        case 9:
+            self.headView.showLabel.textColor = [UIColor whiteColor];
+            self.modelData.fontColor = [UIColor whiteColor];
+            break;
+        default:
+            break;
+    }
+}
+
+// Select headerfooter
+- (void)changeLocation:(UISegmentedControl *)sender {
+    if (sender.selectedSegmentIndex == 0) {
+        _position.location = kHeader;
+    } else {
+        _position.location = kFooter;
+    }
+    [self showPages];
+}
+
+// Select aligment
+- (void)changeAligbment:(UISegmentedControl *)sender {
+    if (sender.selectedSegmentIndex == 0) {
+        _position.aligment = kLeft;
+    } else if (sender.selectedSegmentIndex == 1) {
+        _position.aligment = kCenter;
+    } else {
+        _position.aligment = kRinght;
+    }
+    [self showPages];
+}
+
+// Show headerfooter and aligment
+- (void)showPages {
+    if (_headView.showLabel == nil) {
+        _headView.showLabel = [[UILabel alloc] init];
+    }
+    
+    switch (self.position.location) {
+        case kHeader:
+            if (self.position.aligment == kLeft) {
+                [_headView.showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.headView.imageView.mas_top).offset(0.5);
+                    make.left.equalTo(self.headView.imageView.mas_left).offset(0.5);
+                    make.height.mas_equalTo(10);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelData.fontPosition = 0;
+            } else if (self.position.aligment == kCenter) {
+                [_headView.showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.headView.imageView.mas_top).offset(0.5);
+                    make.left.equalTo(self.headView.imageView.mas_left).offset(self.image.size.width / 18);
+                    make.height.mas_equalTo(10);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelData.fontPosition = 1;
+            } else {
+                [_headView.showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.headView.imageView.mas_top).offset(0.5);
+                    make.left.equalTo(self.headView.imageView.mas_left).offset(self.image.size.width / 9 - 12);
+                    make.height.mas_equalTo(10);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelData.fontPosition = 2;
+            }
+            break;
+            
+        case kFooter:
+            if (self.position.aligment == kLeft) {
+                [_headView.showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.headView.imageView.mas_top).offset(self.image.size.height / 9 - 12);
+                    make.left.equalTo(self.headView.imageView.mas_left).offset(0.5);
+                    make.height.mas_equalTo(10);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelData.fontPosition = 3;
+            } else if (self.position.aligment == kCenter) {
+                [_headView.showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.headView.imageView.mas_top).offset(self.image.size.height / 9 - 12);
+                    make.left.equalTo(self.headView.imageView.mas_left).offset(self.image.size.width / 18);
+                    make.height.mas_equalTo(10);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelData.fontPosition = 4;
+            } else {
+                [_headView.showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.top.equalTo(self.headView.imageView.mas_top).offset(self.image.size.height / 9 - 12);
+                    make.left.equalTo(self.headView.imageView.mas_left).offset(self.image.size.width / 9 - 12);
+                    make.height.mas_equalTo(10);
+                    make.width.mas_equalTo(20);
+                }];
+                self.modelData.fontPosition = 5;
+            }
+            break;
+        default:
+            break;
+    }
+}
+
+
+@end

+ 32 - 0
PDFViewer/Controller/CPDFAddViewControllerHeader.h

@@ -0,0 +1,32 @@
+//
+//  CPDFAddViewControllerHeader.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/8.
+//
+
+#ifndef CPDFAddViewControllerHeader_h
+#define CPDFAddViewControllerHeader_h
+
+#import <UIKit/UIKit.h>
+#import "CPDFHeaderFooterModel.h"
+#import "CPDFHeadView.h"
+
+@interface CPDFAddViewController ()
+
+- (void)initNavigation;
+- (void)cancelClick:(UIBarButtonItem *)btn;
+- (void)sliderChange:(UISlider *)slider;
+- (void)changeLocation:(UISegmentedControl *)sender;
+- (void)changeAligbment:(UISegmentedControl *)sender;
+- (void)showPages;
+- (void)initHeadView;
+ 
+@property (nonatomic,strong) UIImage *image;
+@property (nonatomic,assign) RecPosition position;
+@property (nonatomic,strong) CPDFHeadView *headView;
+@property (nonatomic,strong) CPDFHeaderFooterModel *modelData;
+
+@end
+
+#endif /* CPDFAddViewControllerHeader_h */

+ 2 - 1
PDFViewer/Controller/CPDFBatesAddViewController.h

@@ -8,10 +8,11 @@
 #import <UIKit/UIKit.h>
 #import "CPDFBatesAddView.h"
 #import "CPDFHeaderFooterAddController.h"
+#import "CPDFAddViewController.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface CPDFBatesAddViewController : CPDFHeaderFooterAddController <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
+@interface CPDFBatesAddViewController : CPDFAddViewController <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
 
 @end
 

+ 97 - 31
PDFViewer/Controller/CPDFBatesAddViewController.m

@@ -6,6 +6,7 @@
 //
 
 #import "CPDFBatesAddViewController.h"
+#import "CPDFAddViewControllerHeader.h"
 
 @interface CPDFBatesAddViewController ()
 
@@ -20,6 +21,7 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
+    [self initExtendEvent];
 }
 
 #pragma mark - Initializers
@@ -34,28 +36,36 @@
 - (void)initModel {
     self.modelData = [[CPDFHeaderFooterModel alloc] init];
     self.modelData.fontName = @"Helvetica";
-    self.modelData.fontPosition = 1;
+    self.modelData.fontPosition = 0;
     self.modelData.fontText = @"#2#1#0#0";
     self.modelData.fontColor = [UIColor blackColor];
 }
 
-- (void)initShowLabel {
-    self.showLabel = [[UILabel alloc] init];
-    [self.showLabel setText:@"0010"];
-    self.showLabel.font = [UIFont systemFontOfSize:5];
-}
-
 - (void)initBttonmView {
     _batesAddView = [[CPDFBatesAddView alloc] init];
     [_batesAddView setText];
     [self.view addSubview:_batesAddView];
+    self.headView.showLabel.text = @"0010";
     
-    [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);
-    }];
+    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
+        [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 {
+        [self.batesAddView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.headView.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);
+        }];
+    }
+    
+    self.batesAddView.localSegment.selectedSegmentIndex = 0;
+    self.batesAddView.aligbmentSegment.selectedSegmentIndex = 0;
 }
 
 - (void)initBasicEvent {
@@ -68,6 +78,12 @@
     [_batesAddView.pageIndexNumberText addTarget:self action:@selector(changePageStart:) forControlEvents:UIControlEventEditingChanged];
     [_batesAddView.pageNumberText addTarget:self action:@selector(changeText:) forControlEvents:UIControlEventEditingChanged];
     
+    [_batesAddView.pageNumberText addTarget:self action:@selector(viewUp) forControlEvents:UIControlEventEditingDidBegin];
+    [_batesAddView.pageIndexNumberText addTarget:self action:@selector(viewUp) forControlEvents:UIControlEventEditingDidBegin];
+    
+    [_batesAddView.pageNumberText addTarget:self action:@selector(viewDown) forControlEvents:UIControlEventEditingDidEnd];
+    [_batesAddView.pageIndexNumberText addTarget:self action:@selector(viewDown) forControlEvents:UIControlEventEditingDidEnd];
+    
     _batesAddView.fontNameText.delegate = self;
 }
 
@@ -96,15 +112,39 @@
     [self.batesAddView addSubview:self.fontName ];
     [self.view bringSubviewToFront:self.fontName];
     [_fontName mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.equalTo(self.batesAddView.mas_top).offset(50);
-        make.left.equalTo(self.batesAddView.mas_left).offset(50);
-        make.width.mas_equalTo(293);
-        make.height.mas_equalTo(300);
+        make.top.equalTo(self.batesAddView.mas_top);
+        make.left.equalTo(self.batesAddView.mas_left);
+        make.width.mas_equalTo(393);
+        make.height.mas_equalTo(400);
+    }];
+    
+    // Tableview animation
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.fontName.center = CGPointMake(self.fontName.center.x - 200 - [UIScreen mainScreen].bounds.size.width / 2, self.fontName.center.y);
+    } completion:^(BOOL finished) {
+        NSLog(@"completion");
     }];
     
     [self.fontName.okBtn addTarget:self action:@selector(fontNameOk:) forControlEvents:UIControlEventTouchUpInside];
 }
 
+- (void)textFieldDidChangeSelection:(UITextField *)textField {
+    
+    [self.batesAddView addSubview:self.fontName];
+    [self.view bringSubviewToFront:self.fontName];
+    [_fontName mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.batesAddView.mas_top);
+        make.left.equalTo(self.batesAddView.mas_left);
+        make.width.mas_equalTo(393);
+        make.height.mas_equalTo(400);
+    }];
+    
+    // Tableview animation
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.fontName.center = CGPointMake(self.fontName.center.x - 200 - [UIScreen mainScreen].bounds.size.width / 2, self.fontName.center.y);
+    } completion:nil];
+}
+
 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
     return  NO;
 }
@@ -128,11 +168,9 @@
 #pragma mark - UITableViewDelegate
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
-    self.batesAddView.fontNameText.text = self.dataArray[indexPath.row];
-    
     self.modelData.fontName = self.dataArray[indexPath.row];
     
-    self.showLabel.font = [UIFont fontWithName:self.dataArray[indexPath.row] size:5];
+    self.headView.showLabel.font = [UIFont fontWithName:self.dataArray[indexPath.row] size:5];
 }
 
 #pragma mark - Actions
@@ -151,6 +189,8 @@
 }
 
 - (void)fontNameOk:(UIButton *)okBtn {
+    self.batesAddView.fontNameText.text = self.modelData.fontName;
+    
     [_fontName removeFromSuperview];
 }
 
@@ -178,7 +218,7 @@
         showText = [NSString stringWithFormat:@"%@%@",showText,textArray[4]];
     }
     
-    self.showLabel.text = showText;
+    self.headView.showLabel.text = showText;
     self.modelData.fontText = text.text;
 }
 
@@ -188,17 +228,43 @@
     self.modelData.pageStart = [NSString stringWithFormat:@"%d",start - 1];
 }
 
+- (void)viewUp {
+    [self.batesAddView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.view).offset(125);
+        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);
+    }];
+    
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.batesAddView.center = CGPointMake(self.batesAddView.center.x, self.batesAddView.center.y - 300);
+    } completion:nil];
+}
+
+- (void)viewDown {
+    [self.batesAddView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.headView.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);
+    }];
+    
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.batesAddView.center = CGPointMake(self.batesAddView.center.x, self.batesAddView.center.y + 300);
+    } completion:nil];
+}
+
 
 #pragma mark - Orientation
 
 // When orientation
 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
     if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
-        [self.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);
+        [self.headView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset((393 / 2) - (self.image.size.height / 18));
+            make.left.equalTo(self.view.mas_left).offset((393 / 2) - (self.image.size.width / 18));
+            make.width.mas_equalTo(self.image.size.width / 9);
+            make.height.mas_equalTo(self.image.size.height / 9);
         }];
         
         [self.batesAddView mas_remakeConstraints:^(MASConstraintMaker *make) {
@@ -209,15 +275,15 @@
         }];
         
     } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait) {
-        [self.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        [self.headView 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);
+            make.left.equalTo(self.view.mas_left).offset((393 / 2) - (self.image.size.width / 18));
+            make.width.mas_equalTo(self.image.size.width / 9);
+            make.height.mas_equalTo(self.image.size.height / 9);
         }];
         
         [self.batesAddView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self.imageView.mas_bottom).offset(60);
+            make.top.equalTo(self.headView.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);

+ 2 - 48
PDFViewer/Controller/CPDFHeaderFooterAddController.h

@@ -6,61 +6,15 @@
 //
 
 #import <UIKit/UIKit.h>
-#import <ComPDFKit/CPDFHeaderFooter.h>
-#import <ComPDFKit/ComPDFKit.h>
 #import "CPDFHeaderFooterAddView.h"
 #import "CPDFHeaderFooterModel.h"
 #import "CPDFHeaderFooterTextTableView.h"
 #import "Masonry.h"
+#import "CPDFAddViewController.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
-#define kFormat @"^[ ]+$"
-
-typedef enum CGLocation {
-    kHeader = 0,
-    kFooter,
-}CGLocation;
-
-typedef enum CGAligment {
-    kLeft = 0,
-    kCenter,
-    kRinght,
-}CGAligment;
-
-typedef struct PositionRec {
-    CGLocation location;
-    CGAligment aligment;
-}PositionRec;
-
-@protocol CPDFModelDataDelegate <NSObject>
-
-@optional
-- (void)changeHeaderFooterModelData:(CPDFHeaderFooterModel *)modelData;
-- (void)changBatesModelData:(CPDFHeaderFooterModel *)modelData;
-
-@end
-
-@interface CPDFHeaderFooterAddController : UIViewController  <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
-
-- (id)initWithIamge:(UIImage *)image WithSize:(CGSize)size;
-- (void)initIamge;
-- (void)initNavigation;
-- (void)textFieldDidBeginEditing:(UITextField *)textField;
-- (void)cancelClick:(UIBarButtonItem *)btn;
-- (void)sliderChange:(UISlider *)slider;
-- (void)changeLocation:(UISegmentedControl *)sender;
-- (void)changeAligbment:(UISegmentedControl *)sender;
-- (void)showPages;
-- (void)initShowLabel;
- 
-@property (nonatomic,assign) CGSize size;
-@property (nonatomic,strong) UIImage *image;
-@property (nonatomic,assign) PositionRec position;
-@property (nonatomic,strong) UILabel *showLabel;
-@property (nonatomic,strong) UIImageView *imageView;
-@property (nonatomic,strong) CPDFHeaderFooterModel *modelData;
-@property (nonatomic,weak) id<CPDFModelDataDelegate> delegate;
+@interface CPDFHeaderFooterAddController : CPDFAddViewController  <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
 
 @end
 

+ 98 - 224
PDFViewer/Controller/CPDFHeaderFooterAddController.m

@@ -6,6 +6,7 @@
 //
 
 #import "CPDFHeaderFooterAddController.h"
+#import "CPDFAddViewControllerHeader.h"
 
 @interface CPDFHeaderFooterAddController ()
 
@@ -20,75 +21,18 @@
 - (void)viewDidLoad { 
     [super viewDidLoad];
     
-    // Do any additional setup after loading the view.
-    // Setting navigation
-    [self initNavigation];
-    
-    // Initialize show label
-    [self initShowLabel];
-    
-    // Initialize model
-    [self initModel];
-    
-    // Add page image
-    [self initIamge];
-    
-    // Add view
-    [self initBttonmView];
-
     // UI event
-    [self initBasicEvent];
-    
     [self initExtendEvent];
 }
 
 #pragma mark - Initializers
 
-- (void)initNavigation {
-    self.navigationItem.title = @"Add Page NUmber";
-    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:)];
-}
-
-- (id)initWithIamge:(UIImage *)image WithSize:(CGSize)size {
-    self = [super init];
-    if (self) {
-        _image = image;
-        _size  = size;
-    }
-    return self;
-}
-
 - (void)initModel {
-    _modelData = [[CPDFHeaderFooterModel alloc] init];
-    _modelData.fontSize = 18.0;
-    _modelData.fontSelcet = 0;
-    _modelData.fontPosition = 1;
-    _modelData.pageStart = @"1";
-}
-
-- (void)initShowLabel {
-    _showLabel = [[UILabel alloc] init];
-    [_showLabel setText:@"1"];
-    _showLabel.font = [UIFont systemFontOfSize:6];
-}
-
-- (void)initIamge {
-    _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];
-    
-    [_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);
-    }];
+    self.modelData = [[CPDFHeaderFooterModel alloc] init];
+    self.modelData.fontSize = 18.0;
+    self.modelData.fontSelcet = 0;
+    self.modelData.fontPosition = 0;
+    self.modelData.pageStart = @"1";
 }
 
 - (void)initBttonmView {
@@ -96,12 +40,25 @@
     [_headerFooterview setText];
     [self.view addSubview:_headerFooterview];
     
-    [self.headerFooterview 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);
-    }];
+    
+    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
+        [self.headerFooterview 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);
+            make.width.mas_equalTo(393);
+            make.height.mas_equalTo(self.view.frame.size.height - 20);
+        }];
+    } else {
+        [self.headerFooterview mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.headView.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);
+        }];
+    }
+    
+    self.headerFooterview.localSegment.selectedSegmentIndex = 0;
+    self.headerFooterview.aligbmentSegment.selectedSegmentIndex = 0;
 }
 
 - (void)initBasicEvent {
@@ -114,6 +71,12 @@
     [_headerFooterview.fontSizeText addTarget:self action:@selector(changeFontSize:) forControlEvents:UIControlEventEditingChanged];
     [_headerFooterview.pageIndexNumberText addTarget:self action:@selector(changePageStart:) forControlEvents:UIControlEventEditingChanged];
     
+    [_headerFooterview.fontSizeText addTarget:self action:@selector(viewUp) forControlEvents:UIControlEventEditingDidBegin];
+    [_headerFooterview.pageIndexNumberText addTarget:self action:@selector(viewUp) forControlEvents:UIControlEventEditingDidBegin];
+    
+    [_headerFooterview.fontSizeText addTarget:self action:@selector(viewDown) forControlEvents:UIControlEventEditingDidEnd];
+    [_headerFooterview.pageIndexNumberText addTarget:self action:@selector(viewDown) forControlEvents:UIControlEventEditingDidEnd];
+    
     _headerFooterview.pageNumberText.delegate = self;
 }
 
@@ -143,23 +106,37 @@
     [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(293);
-        make.height.mas_equalTo(300);
+        make.top.equalTo(self.headerFooterview.mas_top);
+        make.left.equalTo(self.headerFooterview.mas_left);
+        make.width.mas_equalTo(393);
+        make.height.mas_equalTo(400);
     }];
     
-    // Tablevire animation
-    [UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
-        NSLog(@"animations");
-        self.pageFormat.center = CGPointMake(self.pageFormat.center.x + 150 + [UIScreen mainScreen].bounds.size.width / 2, self.pageFormat.center.y);
-    } completion:^(BOOL finished) {
-        NSLog(@"completion");
-    }];
+    // Tableview animation
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.pageFormat.center = CGPointMake(self.pageFormat.center.x - 200 - [UIScreen mainScreen].bounds.size.width / 2, self.pageFormat.center.y);
+    } completion:nil];
     
     [self.pageFormat.okBtn addTarget:self action:@selector(pageFormatOk:) forControlEvents:UIControlEventTouchUpInside];
 }
 
+- (void)textFieldDidChangeSelection:(UITextField *)textField {
+    
+    [self.headerFooterview addSubview:self.pageFormat];
+    [self.view bringSubviewToFront:self.pageFormat];
+    [_pageFormat mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.headerFooterview.mas_top);
+        make.left.equalTo(self.headerFooterview.mas_left);
+        make.width.mas_equalTo(393);
+        make.height.mas_equalTo(400);
+    }];
+    
+    // Tableview animation
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.pageFormat.center = CGPointMake(self.pageFormat.center.x - 200 - [UIScreen mainScreen].bounds.size.width / 2, self.pageFormat.center.y);
+    } completion:nil];
+}
+
 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
     return  NO;
 }
@@ -183,11 +160,11 @@
 #pragma mark - UITableViewDelegate
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
-    self.headerFooterview.pageNumberText.text = self.dataArray[indexPath.row];
     
     self.modelData.fontSelcet = indexPath.row;
     
-    self.showLabel.text = self.dataArray[indexPath.row];
+    self.headView.showLabel.text = self.dataArray[indexPath.row];
+    [self showPages];
 }
 
 #pragma mark - Actions
@@ -207,6 +184,7 @@
 }
 
 - (void)pageFormatOk:(UIButton *)okBtn {
+    self.headerFooterview.pageNumberText.text = self.headView.showLabel.text;
     [self.pageFormat removeFromSuperview];
 }
 
@@ -221,145 +199,42 @@
 // Get headerfoote's font size for headerfooter's Model
 - (void)changeFontSize:(UITextField *)text {
     float size = [text.text floatValue];
-    _showLabel.font = [UIFont systemFontOfSize:size / 3];
-    _modelData.fontSize = size;
+    self.headView.showLabel.font = [UIFont systemFontOfSize:size / 3];
+    self.modelData.fontSize = size;
 }
 
-// Slider select color
-- (void)sliderChange:(UISlider *)slider {
-    switch ((int)slider.value / 10) {
-        case 0:
-            self.showLabel.textColor = [UIColor redColor];
-            self.modelData.fontColor = [UIColor redColor];
-            break;
-        case 1:
-            self.showLabel.textColor = [UIColor orangeColor];
-            self.modelData.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.modelData.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.modelData.fontColor = [UIColor yellowColor];;
-            break;
-        case 4:
-            self.showLabel.textColor = [UIColor greenColor];
-            self.modelData.fontColor = [UIColor greenColor];
-            break;
-        case 5:
-            self.showLabel.textColor = [UIColor blueColor];
-            self.modelData.fontColor = [UIColor blueColor];
-            break;
-        case 6:
-            self.showLabel.textColor = [UIColor purpleColor];
-            self.modelData.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.modelData.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.modelData.fontColor = [UIColor blackColor];
-            break;
-        case 9:
-            self.showLabel.textColor = [UIColor whiteColor];
-            self.modelData.fontColor = [UIColor whiteColor];
-            break;
-        default:
-            break;
-    }
-}
-
-// Select headerfooter
-- (void)changeLocation:(UISegmentedControl *)sender {
-    if (sender.selectedSegmentIndex == 0) {
-        _position.location = kHeader;
+- (void)viewUp {
+    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationPortraitUpsideDown) {
+        
     } else {
-        _position.location = kFooter;
+        [self.headerFooterview mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view).offset(125);
+            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);
+        }];
+        
+        [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+            self.headerFooterview.center = CGPointMake(self.headerFooterview.center.x, self.headerFooterview.center.y - 300);
+        } completion:nil];
     }
-    [self showPages];
+    
 }
 
-// Select aligment
-- (void)changeAligbment:(UISegmentedControl *)sender {
-    if (sender.selectedSegmentIndex == 0) {
-        _position.aligment = kLeft;
-    } else if (sender.selectedSegmentIndex == 1) {
-        _position.aligment = kCenter;
+- (void)viewDown {
+    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationPortraitUpsideDown) {
+        
     } else {
-        _position.aligment = kRinght;
-    }
-    [self showPages];
-}
-
-// Show headerfooter and aligment
-- (void)showPages {
-    if (_showLabel == nil) {
-        _showLabel = [[UILabel alloc] init];
-    }
-    [self.imageView addSubview:self.showLabel];
-    
-    switch (self.position.location) {
-        case kHeader:
-            if (self.position.aligment == kLeft) {
-                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
-                    make.top.equalTo(_imageView.mas_top).offset(0.5);
-                    make.left.equalTo(self.imageView.mas_left).offset(0.5);
-                    make.height.mas_equalTo(10);
-                    make.width.mas_equalTo(20);
-                }];
-                self.modelData.fontPosition = 0;
-            } else if (self.position.aligment == kCenter) {
-                [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
-                    make.top.equalTo(_imageView.mas_top).offset(0.5);
-                    make.left.equalTo(self.imageView.mas_left).offset(self.size.width / 6);
-                    make.height.mas_equalTo(10);
-                    make.width.mas_equalTo(20);
-                }];
-                self.modelData.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(10);
-                    make.width.mas_equalTo(20);
-                }];
-                self.modelData.fontPosition = 2;
-            }
-            break;
-            
-        case kFooter:
-            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(10);
-                    make.width.mas_equalTo(20);
-                }];
-                self.modelData.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(10);
-                    make.width.mas_equalTo(20);
-                }];
-                self.modelData.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(10);
-                    make.width.mas_equalTo(20);
-                }];
-                self.modelData.fontPosition = 5;
-            }
-            break;
-        default:
-            break;
+        [self.headerFooterview mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.headView.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);
+        }];
+        
+        [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+            self.headerFooterview.center = CGPointMake(self.headerFooterview.center.x, self.headerFooterview.center.y + 300);
+        } completion:nil];
     }
 }
 
@@ -368,11 +243,11 @@
 // When orientation
 - (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);
+        [self.headView mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self.view.mas_top).offset((393 / 2) - (self.image.size.height / 18));
+            make.left.equalTo(self.view.mas_left).offset((393 / 2) - (self.image.size.width / 18));
+            make.width.mas_equalTo(self.image.size.width / 9);
+            make.height.mas_equalTo(self.image.size.height / 9);
         }];
         
         [self.headerFooterview mas_remakeConstraints:^(MASConstraintMaker *make) {
@@ -381,17 +256,16 @@
             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) {
+        [self.headView 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);
+            make.left.equalTo(self.view.mas_left).offset((393 / 2) - (self.image.size.width / 18));
+            make.width.mas_equalTo(self.image.size.width / 9);
+            make.height.mas_equalTo(self.image.size.height / 9);
         }];
         
         [self.headerFooterview mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self.imageView.mas_bottom).offset(60);
+            make.top.equalTo(self.headView.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);

+ 10 - 1
PDFViewer/Controller/CPDFHeaderFooterAddView.m

@@ -119,6 +119,10 @@
     [_pageNumberLabel setText:@"Page Text"];
     _pageNumberLabel.font = [UIFont boldSystemFontOfSize:14];
     
+    _pageNumberText.inputView = [[UIView alloc] initWithFrame:CGRectZero];
+    _pageNumberText.inputAccessoryView = [[UIView alloc] initWithFrame:CGRectZero];
+    _pageNumberText.delegate = self;
+    _pageNumberText.tintColor = [UIColor clearColor];
     _pageNumberText.borderStyle = UITextBorderStyleRoundedRect;
     _pageNumberText.placeholder = @"text";
     
@@ -126,6 +130,8 @@
     [_fontSizeLabel setText:@"Font Szie"];
     _fontSizeLabel.font = [UIFont boldSystemFontOfSize:14];
     
+    _fontSizeText.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
+    _fontSizeText.clearsOnBeginEditing = YES;
     _fontSizeText.borderStyle = UITextBorderStyleRoundedRect;
     _fontSizeText.placeholder = @"18.0";
     _fontSizeText.delegate = self;
@@ -135,6 +141,9 @@
     [_pageIndexLabel setText:@"Page Start"];
     _pageIndexLabel.font = [UIFont boldSystemFontOfSize:14];
     
+    _pageIndexNumberText.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
+    _pageIndexNumberText.clearsOnBeginEditing = YES;
+    _pageIndexNumberText.delegate = self;
     _pageIndexNumberText.borderStyle = UITextBorderStyleRoundedRect;
     _pageIndexNumberText.placeholder = @"1";
 }
@@ -142,7 +151,7 @@
 #pragma mark - UITextFieldDelegate
 
 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
-    [_pageNumberText resignFirstResponder];
+    [textField resignFirstResponder];
     return YES;
 }
 

+ 3 - 3
PDFViewer/Controller/CPDFListController.m

@@ -63,10 +63,10 @@
     // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
     // self.navigationItem.rightBarButtonItem = self.editButtonItem;
     
-    [self setTableView:[[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]];
+    _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
     
-    [self.tableView setDataSource:self];
-    [self.tableView setDelegate:self];
+    self.tableView.delegate = self;
+    self.tableView.dataSource = self;
     
     self.tableView.rowHeight = 50;
     

+ 80 - 55
PDFViewer/Controller/CPDFViewController.m

@@ -10,13 +10,15 @@
 #import "CPDFViewController.h"
 #import "CPDFHeaderFooterAddController.h"
 #import "CPDFBatesAddViewController.h"
+#import "CPDFSettingView.h"
 
 @interface CPDFViewController () <UIActionSheetDelegate,CPDFModelDataDelegate>
 
 @property (nonatomic,strong) CPDFKitPlatformImage *image;
-@property (nonatomic,assign) CGSize size;
 @property (nonatomic,strong) CPDFDocument *document;
 @property (nonatomic,strong) CPDFView *pdfView;
+@property (nonatomic,strong) CPDFSettingView *headerFooterSetting;
+@property (nonatomic,strong) CPDFSettingView *batesSetting;
 
 @end
 
@@ -44,8 +46,8 @@
     
     // Get document frist image
     CPDFPage *page = [_document pageAtIndex:0];
-    _size = [_document pageSizeAtIndex:0];
-    _image = [page thumbnailOfSize:_size];
+    CGSize size = [_document pageSizeAtIndex:0];
+    _image = [page thumbnailOfSize:size];
     
     // Get document view
     _pdfView = [[CPDFView alloc] initWithFrame:self.view.bounds];
@@ -67,12 +69,12 @@
     
     // Setting headerfooter action
     UIAlertAction *settingHeaderFooter = [UIAlertAction actionWithTitle:@"Setting Headerfooter" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [self settingHeaterFooterAction];
+        [self settingHeaderFooter];
        }];
     
     // Seeting bates action
     UIAlertAction *settingBatesAction = [UIAlertAction actionWithTitle:@"Setting Bates" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [self settingBatesAction];
+        [self settingBates];
        }];
     
     // Cancel action
@@ -89,65 +91,88 @@
     [self presentViewController:alertController animated:YES completion:nil];
 }
 
-#pragma mark - Setting Alert
+#pragma mark - Setting Pop
 
-// Setting headerfooter action
-- (void)settingHeaterFooterAction {
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
-    
-    // Add headerfooter action
-    UIAlertAction *addHeaderfooterAction = [UIAlertAction actionWithTitle:@"Add Headerfooter" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        CPDFHeaderFooterAddController *headerFooterControl = [[CPDFHeaderFooterAddController alloc] initWithIamge:self.image WithSize:self.size];
-        
-        headerFooterControl.delegate = self;
-        
-        [self.navigationController pushViewController:headerFooterControl animated:NO];
-        }];
-    
-    // Delete headerfooter action
-    UIAlertAction *deleteHeaderfooterAction = [UIAlertAction actionWithTitle:@"Delete Headerfooter" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        
-        [self deleteHeaderFooterAction];
-        }];
-    
-    // Cancel Action
-    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
-            NSLog(@"Cancel Action");
-        }];
-    
-    [alertController addAction:addHeaderfooterAction];
-    [alertController addAction:deleteHeaderfooterAction];
-    [alertController addAction:cancelAction];
+- (void)settingHeaderFooter {
+    _headerFooterSetting = [[CPDFSettingView alloc] init];
+    [_headerFooterSetting setText];
+    [self.view addSubview:_headerFooterSetting];
+    
+    [_headerFooterSetting mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.view.mas_bottom);
+        make.left.equalTo(self.view.mas_left);
+        make.right.equalTo(self.view.mas_right);
+        make.height.mas_equalTo(100);
+    }];
+    
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.headerFooterSetting.center = CGPointMake(self.headerFooterSetting.center.x, self.headerFooterSetting.center.y - 100);
+    } completion:nil];
+    
+    [_headerFooterSetting.addButton addTarget:self action:@selector(addHeaderFooter:) forControlEvents:UIControlEventTouchUpInside];
+    [_headerFooterSetting.deleteButton addTarget:self action:@selector(deleteHeaderFooter:) forControlEvents:UIControlEventTouchUpInside];
+}
+
+- (void)settingBates {
+    _batesSetting = [[CPDFSettingView alloc] init];
+    [_batesSetting setText];
+    [self.view addSubview:_batesSetting];
+    
+    [_batesSetting mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.view.mas_bottom);
+        make.left.equalTo(self.view.mas_left);
+        make.right.equalTo(self.view.mas_right);
+        make.height.mas_equalTo(100);
+    }];
+    
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.batesSetting.center = CGPointMake(self.batesSetting.center.x, self.batesSetting.center.y - 100);
+    } completion:nil];
+    
+    [_batesSetting.addButton addTarget:self action:@selector(addBates:) forControlEvents:UIControlEventTouchUpInside];
+    [_batesSetting.deleteButton addTarget:self action:@selector(deleteBates:) forControlEvents:UIControlEventTouchUpInside];
+}
+
+#pragma mark - Actions
+
+- (void)addHeaderFooter:(UIButton *)btn {
+    CPDFHeaderFooterAddController *headerFooterControl = [[CPDFHeaderFooterAddController alloc] initWithImage:self.image];
+
+    headerFooterControl.delegate = self;
+
+    [self.navigationController pushViewController:headerFooterControl animated:NO];
     
-    [self presentViewController:alertController animated:YES completion:nil];
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.headerFooterSetting.center = CGPointMake(self.headerFooterSetting.center.x, self.headerFooterSetting.center.y + 100);
+    } completion:nil];
 }
 
-// Seeting bates action
-- (void)settingBatesAction {
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
+- (void)deleteHeaderFooter:(UIButton *)btn {
+    [self deleteHeaderFooterAction];
     
-    UIAlertAction *addBatesAction = [UIAlertAction actionWithTitle:@"Add Bates" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        CPDFBatesAddViewController *batesAddControl = [[CPDFBatesAddViewController alloc] initWithIamge:self.image WithSize:self.size];
-        
-        batesAddControl.delegate = self;
-        
-        [self.navigationController pushViewController:batesAddControl animated:NO];
-        }];
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.headerFooterSetting.center = CGPointMake(self.headerFooterSetting.center.x, self.headerFooterSetting.center.y + 100);
+    } completion:nil];
+}
+
+- (void)addBates:(UIButton *)btn {
+    CPDFBatesAddViewController *batesAddControl = [[CPDFBatesAddViewController alloc] initWithImage:self.image];
     
-    UIAlertAction *delereBatesAction = [UIAlertAction actionWithTitle:@"Delete Bates" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        
-        [self deleteBatesAction];
-        }];
+    batesAddControl.delegate = self;
     
-    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
-            NSLog(@"Cancel Action");
-        }];
+    [self.navigationController pushViewController:batesAddControl animated:NO];
     
-    [alertController addAction:addBatesAction];
-    [alertController addAction:delereBatesAction];
-    [alertController addAction:cancelAction];
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.batesSetting.center = CGPointMake(self.batesSetting.center.x, self.batesSetting.center.y + 100);
+    } completion:nil];
+}
+
+- (void)deleteBates:(UIButton *)btn {
+    [self deleteBatesAction];
     
-    [self presentViewController:alertController animated:YES completion:nil];
+    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+        self.batesSetting.center = CGPointMake(self.batesSetting.center.x, self.batesSetting.center.y + 100);
+    } completion:nil];
 }
 
 #pragma mark - Delete Alert

+ 2 - 0
PDFViewer/Info.plist

@@ -18,6 +18,8 @@
 	<string>1.0</string>
 	<key>CFBundleVersion</key>
 	<string>1</string>
+	<key>LSApplicationCategoryType</key>
+	<string></string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>UIApplicationSceneManifest</key>

PDFViewer/Controller/Model/CPDFHeaderFooterModel.h → PDFViewer/Model/CPDFHeaderFooterModel.h


PDFViewer/Controller/Model/CPDFHeaderFooterModel.m → PDFViewer/Model/CPDFHeaderFooterModel.m


PDFViewer/Controller/Model/CPDFModel.h → PDFViewer/Model/CPDFModel.h


PDFViewer/Controller/Model/CPDFModel.m → PDFViewer/Model/CPDFModel.m


+ 11 - 1
PDFViewer/View/CPDFBatesAddView.m

@@ -116,6 +116,7 @@
     [_pageIndexLabel setText:@"Start Page"];
     _pageIndexLabel.font = [UIFont boldSystemFontOfSize:14];
     
+    _pageIndexNumberText.delegate = self;
     _pageIndexNumberText.borderStyle = UITextBorderStyleRoundedRect;
     _pageIndexNumberText.placeholder = @"1";
     
@@ -123,7 +124,10 @@
     [_fontNameLabel setText:@"Font Name"];
     _fontNameLabel.font = [UIFont boldSystemFontOfSize:14];
     
+    _fontNameText.inputView = [[UIView alloc] initWithFrame:CGRectZero];
+    _fontNameText.inputAccessoryView = [[UIView alloc] initWithFrame:CGRectZero];
     _fontNameText.borderStyle = UITextBorderStyleRoundedRect;
+    _fontNameText.tintColor = [UIColor clearColor];
     _fontNameText.placeholder = @"Helvetica";
     _fontNameText.keyboardType = UIKeyboardTypeDefault;
     _fontNameText.delegate = self;
@@ -132,10 +136,16 @@
     [_pageNumberLabel setText:@"Page Text"];
     _pageNumberLabel.font = [UIFont boldSystemFontOfSize:14];
     
+    _pageNumberText.delegate = self;
     _pageNumberText.borderStyle = UITextBorderStyleRoundedRect;
     _pageNumberText.placeholder = @"#2#1#0#0";
-
 }
 
+#pragma mark - UITextFieldDelegate
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+    [textField resignFirstResponder];
+    return YES;
+}
 
 @end

+ 22 - 0
PDFViewer/View/CPDFHeadView.h

@@ -0,0 +1,22 @@
+//
+//  CPDFHeadView.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/7.
+//
+
+#import <UIKit/UIKit.h>
+#import "Masonry.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFHeadView : UIView
+
+@property (nonatomic,strong) UILabel *showLabel;
+@property (nonatomic,strong) UIImageView *imageView;
+@property (nonatomic,strong) UIImage *image;
+@property (nonatomic,assign) CGSize size;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 49 - 0
PDFViewer/View/CPDFHeadView.m

@@ -0,0 +1,49 @@
+//
+//  CPDFHeadView.m
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/7.
+//
+
+#import "CPDFHeadView.h"
+
+@implementation CPDFHeadView
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        _imageView = [[UIImageView alloc] init];
+        
+        _imageView.image = self.image;
+        CALayer *layer = [_imageView layer];
+        layer.borderColor = [[UIColor blackColor] CGColor];
+        layer.borderWidth = 0.5f;
+        [self addSubview:_imageView];
+        
+        _showLabel = [[UILabel alloc] init];
+        [_showLabel setText:@"1"];
+        _showLabel.font = [UIFont systemFontOfSize:6];
+        [self.imageView addSubview:self.showLabel];
+    }
+    return self;
+}
+
+- (void)drawRect:(CGRect)rect {
+    [super drawRect:rect];
+    
+    [_imageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.mas_top);
+        make.left.equalTo(self.mas_left);
+        make.width.mas_equalTo(self.image.size.width / 9);
+        make.height.mas_equalTo(self.image.size.height / 9);
+    }];
+    
+    [_showLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(_imageView.mas_top).offset(0.5);
+        make.left.equalTo(self.imageView.mas_left).offset(0.5);
+        make.height.mas_equalTo(10);
+        make.width.mas_equalTo(20);
+    }];
+}
+
+@end

+ 0 - 2
PDFViewer/View/CPDFHeaderFooterTextTableView.h

@@ -15,8 +15,6 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,strong) UITableView *tableView;
 @property (nonatomic,strong) UILabel *titleView;
 @property (nonatomic,strong) UIButton *okBtn;
-@property (nonatomic,strong) UIView * bottomView;
-@property (nonatomic,strong) UIControl *coverView;
 
 - (instancetype)initWithTitleName:(NSString *)titleName;
 

+ 11 - 25
PDFViewer/View/CPDFHeaderFooterTextTableView.m

@@ -14,30 +14,25 @@
     if (self) {
         // Tableview
         _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
-        _tableView.rowHeight = 33;
+        _tableView.rowHeight = 55;
         [self addSubview:_tableView];
         
         // Title
         _titleView = [[UILabel alloc] init];
-        _titleView.font = [UIFont systemFontOfSize:12.0f];
+        _titleView.font = [UIFont systemFontOfSize:15.0f];
         _titleView.textColor = [UIColor blackColor];
         _titleView.backgroundColor = [UIColor systemGray5Color];
         _titleView.text = titleName;
         _titleView.textAlignment = NSTextAlignmentCenter;
         _titleView.textColor = [UIColor whiteColor];
         [self addSubview:_titleView];
-       
-        
-        // View button at the bottom
-        _bottomView = [[UIView alloc] init];
-        _bottomView.backgroundColor = [UIColor systemGray5Color];
-        [self addSubview:_bottomView];
         
         // OK
         _okBtn = [[UIButton alloc] init];
-        [_okBtn setTitle:@"OK" forState:UIControlStateNormal];
-        _okBtn.titleLabel.font = [UIFont systemFontOfSize:12];
-        _okBtn.backgroundColor = [UIColor systemGray3Color];
+        _okBtn.backgroundColor = [UIColor systemGray5Color];
+        [_okBtn setTitle:@"Back" forState:UIControlStateNormal];
+        _okBtn.imageView.image = [UIImage imageNamed:@"btn_frontpage"];
+        [self addSubview:_okBtn];
     }
     return self;
 }
@@ -60,24 +55,15 @@
         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
-    [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);
+        make.height.mas_equalTo(55);
     }];
     
     // OK
-    [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);
+        make.top.equalTo(self.titleView.mas_top).offset(5);
+        make.left.equalTo(self.titleView.mas_left);
+        make.height.mas_equalTo(44);
+        make.width.mas_equalTo(60);
     }];
 }
 

+ 23 - 0
PDFViewer/View/CPDFSettingView.h

@@ -0,0 +1,23 @@
+//
+//  CPDFSettingView.h
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/13.
+//
+
+#import <UIKit/UIKit.h>
+#import "Masonry.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFSettingView : UIView
+
+@property (nonatomic,strong) UILabel *settinigLabel;
+@property (nonatomic,strong) UIButton *addButton;
+@property (nonatomic,strong) UIButton *deleteButton;
+
+- (void)setText;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 57 - 0
PDFViewer/View/CPDFSettingView.m

@@ -0,0 +1,57 @@
+//
+//  CPDFSettingView.m
+//  PDFViewer
+//
+//  Created by kdanmobile_2 on 2022/12/13.
+//
+
+#import "CPDFSettingView.h"
+
+@implementation CPDFSettingView
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        _settinigLabel = [[UILabel alloc] init];
+        _settinigLabel.backgroundColor = [UIColor systemGray5Color];
+        [self addSubview:_settinigLabel];
+        
+        _addButton = [[UIButton alloc] init];
+        [self addSubview:_addButton];
+        
+        _deleteButton = [[UIButton alloc] init];
+        [self addSubview:_deleteButton];
+    }
+    return self;
+}
+
+#pragma marl - Layout
+
+- (void)layoutSubviews {
+    [super layoutSubviews];
+    
+    [_settinigLabel 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(100);
+    }];
+    
+    self.addButton.frame = CGRectMake((self.frame.size.width - 100) / 3, 25, 50, 50);
+    
+    self.deleteButton.frame = CGRectMake((self.frame.size.width - 100) / 3 * 2 + 50, 25, 50, 50);
+}
+
+- (void)setText {
+    [_addButton setImage:[UIImage imageNamed:@"add_newpage01"] forState:UIControlStateNormal];
+    [_addButton setTitle:@"Add" forState:UIControlStateNormal];
+    _addButton.imageEdgeInsets = UIEdgeInsetsMake(0, 18, 24, 10);
+    _addButton.titleEdgeInsets = UIEdgeInsetsMake(self.addButton.imageView.frame.size.height, -self.addButton.imageView.frame.size.width, -1,-11);
+    
+    [_deleteButton setImage:[UIImage imageNamed:@"pageedit_delete"] forState:UIControlStateNormal];
+    [_deleteButton setTitle:@"Delete" forState:UIControlStateNormal];
+    _deleteButton.imageEdgeInsets = UIEdgeInsetsMake(0, 18, 24, 10);
+    _deleteButton.titleEdgeInsets = UIEdgeInsetsMake(self.deleteButton.imageView.frame.size.height, -self.deleteButton.imageView.frame.size.width, -1,-11);
+}
+
+@end

PDFViewer/Controller/Images/add_newpage01.png → PDFViewer/View/PDFViewer/View/Image/add_newpage01.png


BIN
PDFViewer/View/PDFViewer/View/Image/btn_frontpage.png


PDFViewer/Controller/Images/pageedit_delete.png → PDFViewer/View/PDFViewer/View/Image/pageedit_delete.png