PullToRefresh kvo issue

FFIB 6 年之前
父節點
當前提交
65bedd3c66
共有 21 個文件被更改,包括 160 次插入112 次删除
  1. 56 24
      PaiAi/Paiai.xcodeproj/project.pbxproj
  2. 二進制
      PaiAi/Paiai.xcodeproj/project.xcworkspace/xcuserdata/FFIB.xcuserdatad/UserInterfaceState.xcuserstate
  3. 1 0
      PaiAi/Paiai/AppDelegate.swift
  4. 4 0
      PaiAi/Paiai/Info.plist
  5. 1 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/Reusable/NetWork/NetworkApi.swift
  6. 3 3
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/WXUserInfoRemoteAPI.swift
  7. 3 7
      PaiAi/PaiaiDataKit/PresentLayer/UserInfoViewModel.swift
  8. 0 16
      PaiAi/PaiaiUIKit/Reusable/UIKit/AlertViewController/Default/AlertAction/CancelAlertAction.swift
  9. 0 16
      PaiAi/PaiaiUIKit/Reusable/UIKit/AlertViewController/Default/AlertAction/ConfirmAlertAction.swift
  10. 0 16
      PaiAi/PaiaiUIKit/Reusable/UIKit/AlertViewController/Default/AlertAction/DestructiveAlertAction.swift
  11. 1 1
      PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBack/GestureRecoginzier+NavigationBack.swift
  12. 33 20
      PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBar/NavigationBarInOutAnimator.swift
  13. 5 4
      PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBar/NavigationBarInteractivePopDeletegate.swift
  14. 4 4
      PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBar/NavigationBarPushAndPopDelegate.swift
  15. 29 0
      PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationController/NavigationController.swift
  16. 0 1
      PaiAi/PaiaiUIKit/Reusable/UIKit/PageViewController/PageViewController.swift
  17. 4 0
      PaiAi/Paiai_iOS/App/Group/GroupViewController.swift
  18. 4 0
      PaiAi/Paiai_iOS/App/Home/HomeViewController.swift
  19. 4 0
      PaiAi/Paiai_iOS/App/Message/MessageListViewController.swift
  20. 4 0
      PaiAi/Paiai_iOS/App/Mine/MineGroupViewController.swift
  21. 4 0
      PaiAi/Paiai_iOS/App/Mine/MineOrderViewController.swift

+ 56 - 24
PaiAi/Paiai.xcodeproj/project.pbxproj

@@ -3,7 +3,7 @@
3 3
 	archiveVersion = 1;
4 4
 	classes = {
5 5
 	};
6
-	objectVersion = 46;
6
+	objectVersion = 51;
7 7
 	objects = {
8 8
 
9 9
 /* Begin PBXBuildFile section */
@@ -38,6 +38,7 @@
38 38
 		050D719B22531B860076CE06 /* RxSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 050D719A22531B860076CE06 /* RxSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
39 39
 		050D719D22531BA60076CE06 /* SQLite.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 050D719C22531BA60076CE06 /* SQLite.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
40 40
 		050D719E22531BBF0076CE06 /* Differentiator.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 05130FBD21CA194B004EF1BE /* Differentiator.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
41
+		050D71A322545D550076CE06 /* NavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 050D71A222545D550076CE06 /* NavigationController.swift */; };
41 42
 		05130F4021C94B33004EF1BE /* PaiaiUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 05130F3021C94B32004EF1BE /* PaiaiUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
42 43
 		05130F5721C94C12004EF1BE /* AlertAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05130F4F21C94C12004EF1BE /* AlertAnimator.swift */; };
43 44
 		05130F5921C94C12004EF1BE /* AlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05130F5121C94C12004EF1BE /* AlertViewController.swift */; };
@@ -147,10 +148,7 @@
147 148
 		0513106721CA290B004EF1BE /* DateExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0543274721C68C1900C6388D /* DateExt.swift */; };
148 149
 		0513106921CA34D6004EF1BE /* GroupDetailCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513106821CA34D6004EF1BE /* GroupDetailCoordinator.swift */; };
149 150
 		0513106B21CA3545004EF1BE /* PhotoDetailCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513106A21CA3545004EF1BE /* PhotoDetailCoordinator.swift */; };
150
-		0513107D21CA3907004EF1BE /* CancelAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513106F21CA3907004EF1BE /* CancelAlertAction.swift */; };
151
-		0513107F21CA3907004EF1BE /* DestructiveAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513107121CA3907004EF1BE /* DestructiveAlertAction.swift */; };
152 151
 		0513108021CA3907004EF1BE /* ActionSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513107221CA3907004EF1BE /* ActionSheetView.swift */; };
153
-		0513108121CA3907004EF1BE /* ConfirmAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513107321CA3907004EF1BE /* ConfirmAlertAction.swift */; };
154 152
 		0513109321CA3915004EF1BE /* ColorQR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513108A21CA3914004EF1BE /* ColorQR.swift */; };
155 153
 		0513109421CA3915004EF1BE /* QRCodeMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513108B21CA3914004EF1BE /* QRCodeMaskView.swift */; };
156 154
 		0513109521CA3915004EF1BE /* QRCodeScanDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0513108C21CA3914004EF1BE /* QRCodeScanDelegate.swift */; };
@@ -347,6 +345,7 @@
347 345
 		050D719822531B780076CE06 /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/iOS/RxCocoa.framework; sourceTree = "<group>"; };
348 346
 		050D719A22531B860076CE06 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/iOS/RxSwift.framework; sourceTree = "<group>"; };
349 347
 		050D719C22531BA60076CE06 /* SQLite.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SQLite.framework; path = Carthage/Build/iOS/SQLite.framework; sourceTree = "<group>"; };
348
+		050D71A222545D550076CE06 /* NavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationController.swift; sourceTree = "<group>"; };
350 349
 		050E210F21B8CE8A008E1352 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = "<group>"; };
351 350
 		050E211121B8F2D4008E1352 /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = "<group>"; };
352 351
 		050E211321B8F39C008E1352 /* MineCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MineCoordinator.swift; sourceTree = "<group>"; };
@@ -389,10 +388,7 @@
389 388
 		0513106121CA22B5004EF1BE /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Alamofire.framework; path = Carthage/Build/iOS/Alamofire.framework; sourceTree = "<group>"; };
390 389
 		0513106821CA34D6004EF1BE /* GroupDetailCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupDetailCoordinator.swift; sourceTree = "<group>"; };
391 390
 		0513106A21CA3545004EF1BE /* PhotoDetailCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoDetailCoordinator.swift; sourceTree = "<group>"; };
392
-		0513106F21CA3907004EF1BE /* CancelAlertAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CancelAlertAction.swift; sourceTree = "<group>"; };
393
-		0513107121CA3907004EF1BE /* DestructiveAlertAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DestructiveAlertAction.swift; sourceTree = "<group>"; };
394 391
 		0513107221CA3907004EF1BE /* ActionSheetView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionSheetView.swift; sourceTree = "<group>"; };
395
-		0513107321CA3907004EF1BE /* ConfirmAlertAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfirmAlertAction.swift; sourceTree = "<group>"; };
396 392
 		0513108A21CA3914004EF1BE /* ColorQR.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorQR.swift; sourceTree = "<group>"; };
397 393
 		0513108B21CA3914004EF1BE /* QRCodeMaskView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRCodeMaskView.swift; sourceTree = "<group>"; };
398 394
 		0513108C21CA3914004EF1BE /* QRCodeScanDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRCodeScanDelegate.swift; sourceTree = "<group>"; };
@@ -649,6 +645,14 @@
649 645
 			path = Animationes;
650 646
 			sourceTree = "<group>";
651 647
 		};
648
+		050D71A122545CE20076CE06 /* NavigationController */ = {
649
+			isa = PBXGroup;
650
+			children = (
651
+				050D71A222545D550076CE06 /* NavigationController.swift */,
652
+			);
653
+			path = NavigationController;
654
+			sourceTree = "<group>";
655
+		};
652 656
 		05130F2F21C94B32004EF1BE /* PaiaiUIKit */ = {
653 657
 			isa = PBXGroup;
654 658
 			children = (
@@ -675,6 +679,7 @@
675 679
 		05130F4D21C94B72004EF1BE /* UIKit */ = {
676 680
 			isa = PBXGroup;
677 681
 			children = (
682
+				050D71A122545CE20076CE06 /* NavigationController */,
678 683
 				055BB53F220AEA4E009548AA /* Nibless */,
679 684
 				0584FD7A21FABA0300FA1E3E /* Present */,
680 685
 				05C8D21E21EDD5A80001E847 /* NavigationBar */,
@@ -1058,9 +1063,6 @@
1058 1063
 				057317A321F5C6C0009B2FCE /* BottomCancelItem.swift */,
1059 1064
 				059B58A721F83B1600FA64C2 /* CenterCancelItem.swift */,
1060 1065
 				059B58A921F83B2E00FA64C2 /* CenterConfirmItem.swift */,
1061
-				0513106F21CA3907004EF1BE /* CancelAlertAction.swift */,
1062
-				0513107121CA3907004EF1BE /* DestructiveAlertAction.swift */,
1063
-				0513107321CA3907004EF1BE /* ConfirmAlertAction.swift */,
1064 1066
 			);
1065 1067
 			path = AlertAction;
1066 1068
 			sourceTree = "<group>";
@@ -1294,6 +1296,7 @@
1294 1296
 				7737858CEE753530C312F2CB /* Frameworks */,
1295 1297
 			);
1296 1298
 			sourceTree = "<group>";
1299
+			usesTabs = 0;
1297 1300
 		};
1298 1301
 		6CEBD1001CA8D680004DBDE0 /* Products */ = {
1299 1302
 			isa = PBXGroup;
@@ -1484,7 +1487,7 @@
1484 1487
 			attributes = {
1485 1488
 				LastSwiftUpdateCheck = 1010;
1486 1489
 				LastUpgradeCheck = 1020;
1487
-				ORGANIZATIONNAME = yb;
1490
+				ORGANIZATIONNAME = FFIB;
1488 1491
 				TargetAttributes = {
1489 1492
 					05130F2D21C94B32004EF1BE = {
1490 1493
 						CreatedOnToolsVersion = 10.1;
@@ -1524,7 +1527,7 @@
1524 1527
 				};
1525 1528
 			};
1526 1529
 			buildConfigurationList = 6CEBD0FA1CA8D680004DBDE0 /* Build configuration list for PBXProject "Paiai" */;
1527
-			compatibilityVersion = "Xcode 3.2";
1530
+			compatibilityVersion = "Xcode 10.0";
1528 1531
 			developmentRegion = en;
1529 1532
 			hasScannedForEncodings = 0;
1530 1533
 			knownRegions = (
@@ -1627,7 +1630,6 @@
1627 1630
 				05C8D21D21EDD3770001E847 /* NavigationBarInteractivePopDeletegate.swift in Sources */,
1628 1631
 				05C8D22421EED92F0001E847 /* NavigationBarPushAndPopDelegate.swift in Sources */,
1629 1632
 				05130FFD21CA1B39004EF1BE /* HardwareAuthorization.swift in Sources */,
1630
-				0513107D21CA3907004EF1BE /* CancelAlertAction.swift in Sources */,
1631 1633
 				05130FFE21CA1B39004EF1BE /* WaterfallFlowLayout.swift in Sources */,
1632 1634
 				05130FFF21CA1B39004EF1BE /* WaterfallFlowConfiguration.swift in Sources */,
1633 1635
 				055BB53E220AEA3B009548AA /* NiblessViewController.swift in Sources */,
@@ -1639,12 +1641,10 @@
1639 1641
 				0513100121CA1B39004EF1BE /* CGPointExt.swift in Sources */,
1640 1642
 				0584FD7521F9C70D00FA1E3E /* SideAnimator.swift in Sources */,
1641 1643
 				0584FD7721F9C8A300FA1E3E /* PresentAnimatorDelegate.swift in Sources */,
1642
-				0513107F21CA3907004EF1BE /* DestructiveAlertAction.swift in Sources */,
1643 1644
 				059B589F21F7103100FA64C2 /* AlertItem.swift in Sources */,
1644 1645
 				059B58A621F7235D00FA64C2 /* AlertAction.swift in Sources */,
1645 1646
 				0513109821CA3915004EF1BE /* QRCodeScanResult.swift in Sources */,
1646 1647
 				0513100221CA1B39004EF1BE /* CGSizeExt.swift in Sources */,
1647
-				0513108121CA3907004EF1BE /* ConfirmAlertAction.swift in Sources */,
1648 1648
 				05C8D22221EED6860001E847 /* NavigationBarInteractiveViewController.swift in Sources */,
1649 1649
 				0513109A21CA3915004EF1BE /* QRCodeScanView.swift in Sources */,
1650 1650
 				0513100721CA1B39004EF1BE /* UIViewController+UIBarButtonItem.swift in Sources */,
@@ -1671,6 +1671,7 @@
1671 1671
 				0513101921CA1B39004EF1BE /* UIImageExt.swift in Sources */,
1672 1672
 				05C8D22921EF0A9F0001E847 /* NavigationControllerProxy.swift in Sources */,
1673 1673
 				05D3A3D02200288400A29A20 /* Storyboarded.swift in Sources */,
1674
+				050D71A322545D550076CE06 /* NavigationController.swift in Sources */,
1674 1675
 				05C0CEFB21F85A7700993DE2 /* ActionSheetController.swift in Sources */,
1675 1676
 				05C8D21421ED8B9B0001E847 /* NavigationBackViewController.swift in Sources */,
1676 1677
 				0584FD7C21FABC1400FA1E3E /* PresentExtension.swift in Sources */,
@@ -1937,7 +1938,11 @@
1937 1938
 				INFOPLIST_FILE = PaiaiUIKit/Info.plist;
1938 1939
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
1939 1940
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
1940
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1941
+				LD_RUNPATH_SEARCH_PATHS = (
1942
+					"$(inherited)",
1943
+					"@executable_path/Frameworks",
1944
+					"@loader_path/Frameworks",
1945
+				);
1941 1946
 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
1942 1947
 				MTL_FAST_MATH = YES;
1943 1948
 				PRODUCT_BUNDLE_IDENTIFIER = FFIB.PaiaiUIKit;
@@ -1973,7 +1978,11 @@
1973 1978
 				INFOPLIST_FILE = PaiaiUIKit/Info.plist;
1974 1979
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
1975 1980
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
1976
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1981
+				LD_RUNPATH_SEARCH_PATHS = (
1982
+					"$(inherited)",
1983
+					"@executable_path/Frameworks",
1984
+					"@loader_path/Frameworks",
1985
+				);
1977 1986
 				MTL_FAST_MATH = YES;
1978 1987
 				PRODUCT_BUNDLE_IDENTIFIER = FFIB.PaiaiUIKit;
1979 1988
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
@@ -2013,7 +2022,11 @@
2013 2022
 				INFOPLIST_FILE = PaiaiDataKit/Info.plist;
2014 2023
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2015 2024
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2016
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
2025
+				LD_RUNPATH_SEARCH_PATHS = (
2026
+					"$(inherited)",
2027
+					"@executable_path/Frameworks",
2028
+					"@loader_path/Frameworks",
2029
+				);
2017 2030
 				LIBRARY_SEARCH_PATHS = (
2018 2031
 					"$(inherited)",
2019 2032
 					"$(PROJECT_DIR)/Paiai/wxSDK",
@@ -2062,7 +2075,11 @@
2062 2075
 				INFOPLIST_FILE = PaiaiDataKit/Info.plist;
2063 2076
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2064 2077
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2065
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
2078
+				LD_RUNPATH_SEARCH_PATHS = (
2079
+					"$(inherited)",
2080
+					"@executable_path/Frameworks",
2081
+					"@loader_path/Frameworks",
2082
+				);
2066 2083
 				LIBRARY_SEARCH_PATHS = (
2067 2084
 					"$(inherited)",
2068 2085
 					"$(PROJECT_DIR)/Paiai/wxSDK",
@@ -2104,7 +2121,11 @@
2104 2121
 				INFOPLIST_FILE = Paiai_iOS/Info.plist;
2105 2122
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2106 2123
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2107
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
2124
+				LD_RUNPATH_SEARCH_PATHS = (
2125
+					"$(inherited)",
2126
+					"@executable_path/Frameworks",
2127
+					"@loader_path/Frameworks",
2128
+				);
2108 2129
 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
2109 2130
 				MTL_FAST_MATH = YES;
2110 2131
 				PRODUCT_BUNDLE_IDENTIFIER = "com.Paiai-iOS";
@@ -2144,7 +2165,11 @@
2144 2165
 				INFOPLIST_FILE = Paiai_iOS/Info.plist;
2145 2166
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
2146 2167
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2147
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
2168
+				LD_RUNPATH_SEARCH_PATHS = (
2169
+					"$(inherited)",
2170
+					"@executable_path/Frameworks",
2171
+					"@loader_path/Frameworks",
2172
+				);
2148 2173
 				MTL_FAST_MATH = YES;
2149 2174
 				PRODUCT_BUNDLE_IDENTIFIER = "com.Paiai-iOS";
2150 2175
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
@@ -2267,7 +2292,8 @@
2267 2292
 					"-all_load",
2268 2293
 				);
2269 2294
 				SDKROOT = iphoneos;
2270
-				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
2295
+				SWIFT_COMPILATION_MODE = wholemodule;
2296
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
2271 2297
 				VALIDATE_PRODUCT = YES;
2272 2298
 			};
2273 2299
 			name = Release;
@@ -2301,7 +2327,10 @@
2301 2327
 				);
2302 2328
 				INFOPLIST_FILE = PaiAi/Info.plist;
2303 2329
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2304
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
2330
+				LD_RUNPATH_SEARCH_PATHS = (
2331
+					"$(inherited)",
2332
+					"@executable_path/Frameworks",
2333
+				);
2305 2334
 				LIBRARY_SEARCH_PATHS = (
2306 2335
 					"$(inherited)",
2307 2336
 					"$(PROJECT_DIR)/Paiai/wxSDK",
@@ -2348,7 +2377,10 @@
2348 2377
 				);
2349 2378
 				INFOPLIST_FILE = PaiAi/Info.plist;
2350 2379
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
2351
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
2380
+				LD_RUNPATH_SEARCH_PATHS = (
2381
+					"$(inherited)",
2382
+					"@executable_path/Frameworks",
2383
+				);
2352 2384
 				LIBRARY_SEARCH_PATHS = (
2353 2385
 					"$(inherited)",
2354 2386
 					"$(PROJECT_DIR)/Paiai/wxSDK",

二進制
PaiAi/Paiai.xcodeproj/project.xcworkspace/xcuserdata/FFIB.xcuserdatad/UserInterfaceState.xcuserstate


+ 1 - 0
PaiAi/Paiai/AppDelegate.swift

@@ -34,6 +34,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {
34 34
             let rootViewController = ContainerViewController()
35 35
             let nav = UINavigationController(rootViewController: rootViewController)
36 36
             
37
+            rootViewController.setupNavigationBarPushAndPopDelegate()
37 38
             window = UIWindow(frame: UIScreen.main.bounds)
38 39
             window?.rootViewController = nav
39 40
             window?.makeKeyAndVisible()

+ 4 - 0
PaiAi/Paiai/Info.plist

@@ -25,6 +25,8 @@
25 25
 		<dict>
26 26
 			<key>CFBundleTypeRole</key>
27 27
 			<string>Editor</string>
28
+			<key>CFBundleURLName</key>
29
+			<string>weixin</string>
28 30
 			<key>CFBundleURLSchemes</key>
29 31
 			<array>
30 32
 				<string>wx4e22a0c8ae6d766d</string>
@@ -43,6 +45,8 @@
43 45
 		<dict>
44 46
 			<key>CFBundleTypeRole</key>
45 47
 			<string>Editor</string>
48
+			<key>CFBundleURLName</key>
49
+			<string>weibo</string>
46 50
 			<key>CFBundleURLSchemes</key>
47 51
 			<array>
48 52
 				<string>wb2730190333</string>

+ 1 - 0
PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/Reusable/NetWork/NetworkApi.swift

@@ -74,6 +74,7 @@ class NetworkApi {
74 74
                         if status == 200 {
75 75
                             observer(.success(data))
76 76
                         } else {
77
+                            print(json)
77 78
                             Toast.show(message: (json["description"]  as? String) ?? "")
78 79
                             observer(.error(BusinessError(id: status)))
79 80
                         }

+ 3 - 3
PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/WXUserInfoRemoteAPI.swift

@@ -17,12 +17,12 @@ struct WXUserInfoRemoteAPI: UserInfoRemoteAPI {
17 17
     init() {}
18 18
     
19 19
     func login() -> Single<UserInfo> {
20
-        #if (arch(i386) || arch(x86_64))
20
+//        #if (arch(i386) || arch(x86_64))
21 21
         return Single.create(subscribe: { (observer) in
22 22
             observer(.success(UserInfo(json: ["user_id": "fiDz2Ms" as AnyObject, "userName": "郑剑飞" as AnyObject, "photoPath": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJibSYLgvXpMakvD9FaCqfiaWqcMiaiaz905YxWPuO4hy8F2lGheV7kVr9vKKXFgmL1S5s4QJgxwuwtVw/132" as AnyObject])))
23 23
             return Disposables.create()
24 24
         })
25
-        #else
25
+//        #else
26 26
         loginWithWeChat()
27 27
         return addWXLoginDidFinish().flatMap({
28 28
             return self.getWXToken(param: $0)
@@ -33,7 +33,7 @@ struct WXUserInfoRemoteAPI: UserInfoRemoteAPI {
33 33
         }).do(onSuccess: { res in
34 34
             print(res)
35 35
         })
36
-        #endif
36
+//        #endif
37 37
     }
38 38
     
39 39
     fileprivate func loginWithWeChat() {

+ 3 - 7
PaiAi/PaiaiDataKit/PresentLayer/UserInfoViewModel.swift

@@ -71,9 +71,7 @@ public class UserInfoViewModel {
71 71
         repository.guestLogin().subscribe(onSuccess: { (userInfo) in
72 72
             self.shareUserInfo.accept(userInfo)
73 73
             self._loginCompleted.onNext(())
74
-        }) { (error) in
75
-            #warning("错误处理")
76
-        }.disposed(by: disposeBag)
74
+        }).disposed(by: disposeBag)
77 75
     }
78 76
     
79 77
     public func wxLogin() {
@@ -81,10 +79,8 @@ public class UserInfoViewModel {
81 79
         repository.wxLogin().subscribe(onSuccess: { (userInfo) in
82 80
             self.shareUserInfo.accept(userInfo)
83 81
             self._loginCompleted.onNext(())
84
-        }) { (error) in
85
-            print(error)
86
-            #warning("错误处理")
87
-        }.disposed(by: disposeBag)
82
+            Toast.hide()
83
+        }).disposed(by: disposeBag)
88 84
     }
89 85
     
90 86
     deinit {

+ 0 - 16
PaiAi/PaiaiUIKit/Reusable/UIKit/AlertViewController/Default/AlertAction/CancelAlertAction.swift

@@ -1,16 +0,0 @@
1
-//
2
-//  CancelAlertAction.swift
3
-//  PaiAi
4
-//
5
-//  Created by FFIB on 2017/11/20.
6
-//  Copyright © 2017年 yb. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-//
11
-//class CancelAlertAction: FFAlertAction {
12
-//    init() {
13
-//        super.init(attributedTitle: NSAttributedString(string: "取消", attributes: [NSAttributedString.Key.foregroundColor: UIColor(r: 51, g: 51, b: 51)]),
14
-//                   backgroundColor: UIColor(r: 222, g: 222, b: 222), handler: nil)
15
-//    }
16
-//}

+ 0 - 16
PaiAi/PaiaiUIKit/Reusable/UIKit/AlertViewController/Default/AlertAction/ConfirmAlertAction.swift

@@ -1,16 +0,0 @@
1
-//
2
-//  ConfirmAlertAction.swift
3
-//  PaiAi
4
-//
5
-//  Created by FFIB on 2017/11/20.
6
-//  Copyright © 2017年 yb. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-
11
-//class ConfirmAlertAction: FFAlertAction {
12
-//    init(title: String = "确定", handler: ((FFAlertAction) -> Void)?) {
13
-//        super.init(attributedTitle: NSAttributedString(string: title, attributes: [NSAttributedString.Key.foregroundColor: UIColor.white]),
14
-//                   backgroundColor: UIColor(r: 129, g: 209, b: 53), handler: handler)
15
-//    }
16
-//}

+ 0 - 16
PaiAi/PaiaiUIKit/Reusable/UIKit/AlertViewController/Default/AlertAction/DestructiveAlertAction.swift

@@ -1,16 +0,0 @@
1
-//
2
-//  DestructiveAlertAction.swift
3
-//  PaiAi
4
-//
5
-//  Created by FFIB on 2017/11/20.
6
-//  Copyright © 2017年 yb. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-
11
-//class DestructiveAlertAction: FFAlertAction {
12
-//    init(title: String, handler: ((FFAlertAction) -> Void)?) {
13
-//        super.init(attributedTitle: NSAttributedString(string: title, attributes: [NSAttributedString.Key.foregroundColor: UIColor(r: 248, g: 86, b: 131)]),
14
-//                   backgroundColor: UIColor.white, handler: handler)
15
-//    }
16
-//}

+ 1 - 1
PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBack/GestureRecoginzier+NavigationBack.swift

@@ -15,7 +15,7 @@ public extension GestureRecognizerDelegate where Self: UIViewController & Naviga
15 15
             gestureRecognizer.isKind(of: UIPanGestureRecognizer.self),
16 16
             let pan = gestureRecognizer as? UIPanGestureRecognizer {
17 17
             let point = pan.translation(in: self.view)
18
-            if point.x > 30 {
18
+            if point.x > 0 {
19 19
                 return true
20 20
             }
21 21
         }

+ 33 - 20
PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBar/NavigationBarInOutAnimator.swift

@@ -10,46 +10,59 @@ import UIKit
10 10
 
11 11
 public protocol NavigationBarInOutAnimator: class {
12 12
     var navigationView: UIView { get }
13
-    func navigationBarFadeIn()
14
-    func navigationBarFadeOut()
15
-    func navigationBarFadeAndMoveIn()
16
-    func navigationBarFadeAndMoveOut()
13
+    func navigationBarFadeIn(percentage: CGFloat)
14
+    func navigationBarFadeOut(percentage: CGFloat)
15
+    func navigationBarFadeAndMoveIn(percentage: CGFloat)
16
+    func navigationBarFadeAndMoveOut(percentage: CGFloat)
17 17
     func navigationBarFadeOutWithPercentage(_ percentage: CGFloat)
18 18
     func navigationBarFadeInWithPercentage(_ percentage: CGFloat)
19 19
 }
20 20
 
21 21
 public extension NavigationBarInOutAnimator where Self: UIViewController & NavigationBarPushAndPopDelegate {
22
-    func navigationBarFadeIn() {
23
-        UIView.animate(withDuration: 0.3, animations: {
22
+    func navigationBarFadeIn(percentage: CGFloat) {
23
+        UIView.animate(withDuration: TimeInterval(0.3 * percentage),
24
+                       animations: {
24 25
             self.navigationView.alpha = 1
25 26
         }, completion: nil)
26 27
     }
27 28
     
28
-    func navigationBarFadeOut() {
29
-        UIView.animate(withDuration: 0.3, animations: {
29
+    func navigationBarFadeOut(percentage: CGFloat) {
30
+        UIView.animate(withDuration: TimeInterval(0.3 * percentage),
31
+                       animations: {
30 32
             self.navigationView.alpha = 0
31 33
         }, completion: nil)
32 34
     }
33 35
     
34
-    func navigationBarFadeAndMoveIn() {
35
-        setNavigationBar()
36
-        navigationController?.navigationBar.layoutIfNeeded()
36
+    func navigationBarFadeAndMoveIn(percentage: CGFloat) {
37
+//        setNavigationBar()
38
+//        navigationController?.navigationBar.layoutIfNeeded()
37 39
         
38
-        let originX = navigationView.center.x
39
-        navigationView.center.x = UIScreen.main.bounds.width
40
+//        let originX = navigationView.center.x
41
+//        navigationView.center.x = UIScreen.main.bounds.width
40 42
         
41
-        UIView.animate(withDuration: 0.3, animations: {
43
+        UIView.animate(withDuration: TimeInterval(0.3 * percentage),
44
+                       animations: {
42 45
             self.navigationView.alpha = 1
43
-            self.navigationView.center.x = originX
44
-        }, completion: nil)
46
+            self.navigationView.center.x = UIScreen.main.bounds.width / 2
47
+        }, completion: { flag in
48
+//            if flag {
49
+                self.setNavigationBar()
50
+//            }
51
+            print("move in \(flag)")
52
+        })
45 53
     }
46 54
     
47
-    func navigationBarFadeAndMoveOut() {
48
-        UIView.animate(withDuration: 0.3, animations: {
55
+    func navigationBarFadeAndMoveOut(percentage: CGFloat) {
56
+        print(self.navigationView.center)
57
+        UIView.animate(withDuration: TimeInterval(0.3 * percentage),
58
+                       animations: {
49 59
             self.navigationView.alpha = 0
50 60
             self.navigationView.center.x = UIScreen.main.bounds.width
51
-        }, completion: { _ in
52
-            self.navigationView.removeFromSuperview()
61
+        }, completion: { flag in
62
+//            if flag {
63
+                self.navigationView.removeFromSuperview()
64
+//            }
65
+            print("move out \(flag)")
53 66
         })
54 67
     }
55 68
     

+ 5 - 4
PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBar/NavigationBarInteractivePopDeletegate.swift

@@ -29,8 +29,9 @@ extension UIViewController {
29 29
         /// navigationController?.visibleViewController == self pop to viewController
30 30
         
31 31
         let percentageAnimation: ((CGFloat) -> Void)
32
-        let fadeInAnimation: (() -> Void)
33
-        let fadeOutAnimation: (() -> Void)
32
+        let fadeInAnimation: ((CGFloat) -> Void)
33
+        let fadeOutAnimation: ((CGFloat) -> Void)
34
+
34 35
         if navigationController == nil {
35 36
             percentageAnimation = self.navigationBarFadeOutWithPercentage
36 37
             fadeInAnimation = self.navigationBarFadeAndMoveIn
@@ -49,10 +50,10 @@ extension UIViewController {
49 50
 
50 51
         if (percentage > 0.5 && navigationController == nil) ||
51 52
             (percentage < 0.5 && navigationController?.visibleViewController == self) {
52
-            fadeOutAnimation()
53
+            fadeOutAnimation(1 - percentage)
53 54
         } else if (percentage < 0.5 && navigationController == nil) ||
54 55
             (percentage > 0.5 && navigationController?.visibleViewController == self) {
55
-            fadeInAnimation()
56
+            fadeInAnimation(percentage)
56 57
         }
57 58
     }
58 59
     

+ 4 - 4
PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationBar/NavigationBarPushAndPopDelegate.swift

@@ -29,11 +29,11 @@ public extension NavigationControllerDelegate where Self: UIViewController {
29 29
                               to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
30 30
         
31 31
         if operation == .push {
32
-            (toVC as? NavigationBarInOutAnimator)?.navigationBarFadeAndMoveIn()
33
-            (fromVC as? NavigationBarInOutAnimator)?.navigationBarFadeOut()
32
+            (toVC as? NavigationBarInOutAnimator)?.navigationBarFadeAndMoveIn(percentage: 1)
33
+            (fromVC as? NavigationBarInOutAnimator)?.navigationBarFadeOut(percentage: 1)
34 34
         } else {
35
-            (toVC as? NavigationBarInOutAnimator)?.navigationBarFadeIn()
36
-            (fromVC as? NavigationBarInOutAnimator)?.navigationBarFadeAndMoveOut()
35
+            (toVC as? NavigationBarInOutAnimator)?.navigationBarFadeIn(percentage: 1)
36
+            (fromVC as? NavigationBarInOutAnimator)?.navigationBarFadeAndMoveOut(percentage: 1)
37 37
         }
38 38
         
39 39
         return nil

+ 29 - 0
PaiAi/PaiaiUIKit/Reusable/UIKit/NavigationController/NavigationController.swift

@@ -0,0 +1,29 @@
1
+//
2
+//  NavigationController.swift
3
+//  PaiaiUIKit
4
+//
5
+//  Created by ffib on 2019/4/3.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import UIKit
10
+
11
+class NavigationController: UINavigationController {
12
+    
13
+}
14
+
15
+//class NavigationController: UINavigationController {
16
+//
17
+//    override func viewDidLoad() {
18
+//        super.viewDidLoad()
19
+//
20
+//        // Do any additional setup after loading the view.
21
+//    }
22
+//    
23
+//    func set
24
+//}
25
+//
26
+//
27
+//extension UIViewController {
28
+//    n
29
+//}

+ 0 - 1
PaiAi/PaiaiUIKit/Reusable/UIKit/PageViewController/PageViewController.swift

@@ -72,7 +72,6 @@ open class PageViewController: UIViewController {
72 72
         constructViewHierarchy()
73 73
         activateConstraints()
74 74
         setMenuGestureRecognizer()
75
-        setupNavigationBarPushAndPopDelegate()
76 75
         setupNavigationBarInteractivePopDelegate()
77 76
     }
78 77
     

+ 4 - 0
PaiAi/Paiai_iOS/App/Group/GroupViewController.swift

@@ -74,6 +74,10 @@ final class GroupViewController: UIViewController {
74 74
         }
75 75
         collectionView.startRefreshing(at: .top)
76 76
     }
77
+    
78
+    deinit {
79
+        collectionView.endAllRefreshing()
80
+    }
77 81
 }
78 82
 
79 83
 /// UI bindings

+ 4 - 0
PaiAi/Paiai_iOS/App/Home/HomeViewController.swift

@@ -60,6 +60,10 @@ final class HomeViewController: UIViewController {
60 60
             self.viewModel.preload()
61 61
         }
62 62
     }
63
+    
64
+    deinit {
65
+        collectionView.endAllRefreshing()
66
+    }
63 67
 }
64 68
 
65 69
 /// UI bindings

+ 4 - 0
PaiAi/Paiai_iOS/App/Message/MessageListViewController.swift

@@ -88,6 +88,10 @@ final class MessageListViewController: UIViewController {
88 88
         }))
89 89
         presentController(alert)
90 90
     }
91
+    
92
+    deinit {
93
+        tableView.endAllRefreshing()
94
+    }
91 95
 }
92 96
 
93 97
 fileprivate extension MessageListViewController {

+ 4 - 0
PaiAi/Paiai_iOS/App/Mine/MineGroupViewController.swift

@@ -56,6 +56,10 @@ final class MineGroupViewController: UIViewController {
56 56
             self.viewModel.preload()
57 57
         }
58 58
     }
59
+    
60
+    deinit {
61
+        tableView.endAllRefreshing()
62
+    }
59 63
 }
60 64
 
61 65
 fileprivate extension MineGroupViewController {

+ 4 - 0
PaiAi/Paiai_iOS/App/Mine/MineOrderViewController.swift

@@ -53,6 +53,10 @@ final class MineOrderViewController: UIViewController {
53 53
             self.viewModel.preload()
54 54
         }
55 55
     }
56
+    
57
+    deinit {
58
+        tableView.endAllRefreshing()
59
+    }
56 60
 }
57 61
 
58 62
 /// binding UI