0dfb837d7f842L1631">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",
|
|
|
|
@@ -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()
|
|
|
|
@@ -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>
|
|
|
|
@@ -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
|
}
|
|
|
|
@@ -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() {
|
|
|
|
@@ -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 {
|
|
|
|
@@ -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
|
|
-//}
|
|
|
|
@@ -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
|
|
-//}
|
|
|
|
@@ -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
|
|
-//}
|
|
|
|
@@ -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
|
}
|
|
|
|
@@ -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
|
|
|
|
|
@@ -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
|
|
|
|
|
@@ -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
|
|
|
|
@@ -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
|
+//}
|
|
|
|
@@ -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
|
|
|
|
|
@@ -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
|
|
|
|
@@ -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
|
|
|
|
@@ -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 {
|
|
|
|
@@ -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 {
|
|
|
|
@@ -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
|