Skip to content

Commit 9fea32e

Browse files
Carthage、SPM支持
1 parent 4937bbb commit 9fea32e

File tree

55 files changed

+643
-2035
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+643
-2035
lines changed

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

SwiftFCXRefreshDemo/SwiftFCXRefreshDemo.xcodeproj/project.pbxproj Example/SwiftFCXRefreshDemo.xcodeproj/project.pbxproj

+49-62
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,42 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
191C2C0624528B8900E0B56F /* SwiftFCXRefresh.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 191C2C0124528A4F00E0B56F /* SwiftFCXRefresh.framework */; };
11+
191C2C0724528B8900E0B56F /* SwiftFCXRefresh.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 191C2C0124528A4F00E0B56F /* SwiftFCXRefresh.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1012
8A39AD131F0726EE00E245E7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A39AD121F0726EE00E245E7 /* AppDelegate.swift */; };
1113
8A39AD151F0726EE00E245E7 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A39AD141F0726EE00E245E7 /* ViewController.swift */; };
1214
8A39AD181F0726EE00E245E7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A39AD161F0726EE00E245E7 /* Main.storyboard */; };
1315
8A39AD1A1F0726EE00E245E7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A39AD191F0726EE00E245E7 /* Assets.xcassets */; };
1416
8A39AD1D1F0726EE00E245E7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A39AD1B1F0726EE00E245E7 /* LaunchScreen.storyboard */; };
1517
8A39AD261F077FBE00E245E7 /* RefreshTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A39AD251F077FBE00E245E7 /* RefreshTableViewController.swift */; };
16-
95430614CD82A74F0C7B7305 /* Pods_SwiftFCXRefreshDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9606C6828B4EA6F71F32CC3 /* Pods_SwiftFCXRefreshDemo.framework */; };
1718
/* End PBXBuildFile section */
1819

20+
/* Begin PBXContainerItemProxy section */
21+
191C2C0024528A4F00E0B56F /* PBXContainerItemProxy */ = {
22+
isa = PBXContainerItemProxy;
23+
containerPortal = 191C2BFC24528A4E00E0B56F /* SwiftFCXRefresh.xcodeproj */;
24+
proxyType = 2;
25+
remoteGlobalIDString = 191C2BC92452867100E0B56F;
26+
remoteInfo = SwiftFCXRefresh;
27+
};
28+
/* End PBXContainerItemProxy section */
29+
30+
/* Begin PBXCopyFilesBuildPhase section */
31+
191C2C0824528B8900E0B56F /* Embed Frameworks */ = {
32+
isa = PBXCopyFilesBuildPhase;
33+
buildActionMask = 2147483647;
34+
dstPath = "";
35+
dstSubfolderSpec = 10;
36+
files = (
37+
191C2C0724528B8900E0B56F /* SwiftFCXRefresh.framework in Embed Frameworks */,
38+
);
39+
name = "Embed Frameworks";
40+
runOnlyForDeploymentPostprocessing = 0;
41+
};
42+
/* End PBXCopyFilesBuildPhase section */
43+
1944
/* Begin PBXFileReference section */
20-
59F222443CCA477472F9DA4B /* Pods-SwiftFCXRefreshDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftFCXRefreshDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwiftFCXRefreshDemo/Pods-SwiftFCXRefreshDemo.debug.xcconfig"; sourceTree = "<group>"; };
45+
191C2BFC24528A4E00E0B56F /* SwiftFCXRefresh.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SwiftFCXRefresh.xcodeproj; path = ../SwiftFCXRefresh.xcodeproj; sourceTree = "<group>"; };
2146
8A39AD0F1F0726EE00E245E7 /* SwiftFCXRefreshDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftFCXRefreshDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
2247
8A39AD121F0726EE00E245E7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
2348
8A39AD141F0726EE00E245E7 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -26,46 +51,34 @@
2651
8A39AD1C1F0726EE00E245E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
2752
8A39AD1E1F0726EE00E245E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
2853
8A39AD251F077FBE00E245E7 /* RefreshTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshTableViewController.swift; sourceTree = "<group>"; };
29-
B46A0B9CF88A970991F6E1D8 /* Pods-SwiftFCXRefreshDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftFCXRefreshDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwiftFCXRefreshDemo/Pods-SwiftFCXRefreshDemo.release.xcconfig"; sourceTree = "<group>"; };
30-
D9606C6828B4EA6F71F32CC3 /* Pods_SwiftFCXRefreshDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftFCXRefreshDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3154
/* End PBXFileReference section */
3255

3356
/* Begin PBXFrameworksBuildPhase section */
3457
8A39AD0C1F0726EE00E245E7 /* Frameworks */ = {
3558
isa = PBXFrameworksBuildPhase;
3659
buildActionMask = 2147483647;
3760
files = (
38-
95430614CD82A74F0C7B7305 /* Pods_SwiftFCXRefreshDemo.framework in Frameworks */,
61+
191C2C0624528B8900E0B56F /* SwiftFCXRefresh.framework in Frameworks */,
3962
);
4063
runOnlyForDeploymentPostprocessing = 0;
4164
};
4265
/* End PBXFrameworksBuildPhase section */
4366

4467
/* Begin PBXGroup section */
45-
44B8D73D2759D5A6DC96681E /* Pods */ = {
68+
191C2BFD24528A4E00E0B56F /* Products */ = {
4669
isa = PBXGroup;
4770
children = (
48-
59F222443CCA477472F9DA4B /* Pods-SwiftFCXRefreshDemo.debug.xcconfig */,
49-
B46A0B9CF88A970991F6E1D8 /* Pods-SwiftFCXRefreshDemo.release.xcconfig */,
71+
191C2C0124528A4F00E0B56F /* SwiftFCXRefresh.framework */,
5072
);
51-
name = Pods;
52-
sourceTree = "<group>";
53-
};
54-
706A33B2191F3781593E52A3 /* Frameworks */ = {
55-
isa = PBXGroup;
56-
children = (
57-
D9606C6828B4EA6F71F32CC3 /* Pods_SwiftFCXRefreshDemo.framework */,
58-
);
59-
name = Frameworks;
73+
name = Products;
6074
sourceTree = "<group>";
6175
};
6276
8A39AD061F0726EE00E245E7 = {
6377
isa = PBXGroup;
6478
children = (
6579
8A39AD111F0726EE00E245E7 /* SwiftFCXRefreshDemo */,
6680
8A39AD101F0726EE00E245E7 /* Products */,
67-
44B8D73D2759D5A6DC96681E /* Pods */,
68-
706A33B2191F3781593E52A3 /* Frameworks */,
81+
191C2BFC24528A4E00E0B56F /* SwiftFCXRefresh.xcodeproj */,
6982
);
7083
sourceTree = "<group>";
7184
};
@@ -98,11 +111,10 @@
98111
isa = PBXNativeTarget;
99112
buildConfigurationList = 8A39AD211F0726EE00E245E7 /* Build configuration list for PBXNativeTarget "SwiftFCXRefreshDemo" */;
100113
buildPhases = (
101-
9B698C90848A8DEABC6EB135 /* [CP] Check Pods Manifest.lock */,
102114
8A39AD0B1F0726EE00E245E7 /* Sources */,
103115
8A39AD0C1F0726EE00E245E7 /* Frameworks */,
104116
8A39AD0D1F0726EE00E245E7 /* Resources */,
105-
C89D46D0830D4B83CDA5218E /* [CP] Embed Pods Frameworks */,
117+
191C2C0824528B8900E0B56F /* Embed Frameworks */,
106118
);
107119
buildRules = (
108120
);
@@ -142,13 +154,29 @@
142154
mainGroup = 8A39AD061F0726EE00E245E7;
143155
productRefGroup = 8A39AD101F0726EE00E245E7 /* Products */;
144156
projectDirPath = "";
157+
projectReferences = (
158+
{
159+
ProductGroup = 191C2BFD24528A4E00E0B56F /* Products */;
160+
ProjectRef = 191C2BFC24528A4E00E0B56F /* SwiftFCXRefresh.xcodeproj */;
161+
},
162+
);
145163
projectRoot = "";
146164
targets = (
147165
8A39AD0E1F0726EE00E245E7 /* SwiftFCXRefreshDemo */,
148166
);
149167
};
150168
/* End PBXProject section */
151169

170+
/* Begin PBXReferenceProxy section */
171+
191C2C0124528A4F00E0B56F /* SwiftFCXRefresh.framework */ = {
172+
isa = PBXReferenceProxy;
173+
fileType = wrapper.framework;
174+
path = SwiftFCXRefresh.framework;
175+
remoteRef = 191C2C0024528A4F00E0B56F /* PBXContainerItemProxy */;
176+
sourceTree = BUILT_PRODUCTS_DIR;
177+
};
178+
/* End PBXReferenceProxy section */
179+
152180
/* Begin PBXResourcesBuildPhase section */
153181
8A39AD0D1F0726EE00E245E7 /* Resources */ = {
154182
isa = PBXResourcesBuildPhase;
@@ -162,45 +190,6 @@
162190
};
163191
/* End PBXResourcesBuildPhase section */
164192

165-
/* Begin PBXShellScriptBuildPhase section */
166-
9B698C90848A8DEABC6EB135 /* [CP] Check Pods Manifest.lock */ = {
167-
isa = PBXShellScriptBuildPhase;
168-
buildActionMask = 2147483647;
169-
files = (
170-
);
171-
inputPaths = (
172-
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
173-
"${PODS_ROOT}/Manifest.lock",
174-
);
175-
name = "[CP] Check Pods Manifest.lock";
176-
outputPaths = (
177-
"$(DERIVED_FILE_DIR)/Pods-SwiftFCXRefreshDemo-checkManifestLockResult.txt",
178-
);
179-
runOnlyForDeploymentPostprocessing = 0;
180-
shellPath = /bin/sh;
181-
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
182-
showEnvVarsInLog = 0;
183-
};
184-
C89D46D0830D4B83CDA5218E /* [CP] Embed Pods Frameworks */ = {
185-
isa = PBXShellScriptBuildPhase;
186-
buildActionMask = 2147483647;
187-
files = (
188-
);
189-
inputPaths = (
190-
"${PODS_ROOT}/Target Support Files/Pods-SwiftFCXRefreshDemo/Pods-SwiftFCXRefreshDemo-frameworks.sh",
191-
"${BUILT_PRODUCTS_DIR}/SwiftFCXRefresh/SwiftFCXRefresh.framework",
192-
);
193-
name = "[CP] Embed Pods Frameworks";
194-
outputPaths = (
195-
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftFCXRefresh.framework",
196-
);
197-
runOnlyForDeploymentPostprocessing = 0;
198-
shellPath = /bin/sh;
199-
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwiftFCXRefreshDemo/Pods-SwiftFCXRefreshDemo-frameworks.sh\"\n";
200-
showEnvVarsInLog = 0;
201-
};
202-
/* End PBXShellScriptBuildPhase section */
203-
204193
/* Begin PBXSourcesBuildPhase section */
205194
8A39AD0B1F0726EE00E245E7 /* Sources */ = {
206195
isa = PBXSourcesBuildPhase;
@@ -349,7 +338,6 @@
349338
};
350339
8A39AD221F0726EE00E245E7 /* Debug */ = {
351340
isa = XCBuildConfiguration;
352-
baseConfigurationReference = 59F222443CCA477472F9DA4B /* Pods-SwiftFCXRefreshDemo.debug.xcconfig */;
353341
buildSettings = {
354342
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
355343
CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -367,7 +355,6 @@
367355
};
368356
8A39AD231F0726EE00E245E7 /* Release */ = {
369357
isa = XCBuildConfiguration;
370-
baseConfigurationReference = B46A0B9CF88A970991F6E1D8 /* Pods-SwiftFCXRefreshDemo.release.xcconfig */;
371358
buildSettings = {
372359
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
373360
CODE_SIGN_IDENTITY = "iPhone Developer";

SwiftFCXRefreshDemo/SwiftFCXRefreshDemo/RefreshTableViewController.swift Example/SwiftFCXRefreshDemo/RefreshTableViewController.swift

+8-7
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ class RefreshTableViewController: UITableViewController {
2323
addRefreshView()
2424
setupConfig()
2525
}
26+
27+
override func viewDidAppear(_ animated: Bool) {
28+
super.viewDidAppear(animated)
29+
if selectedRow == 1 {
30+
headerRefreshView?.autoRefresh()
31+
}
32+
}
2633

2734
//自动下拉刷新
2835
@objc func autoRefresh() {
@@ -100,8 +107,7 @@ class RefreshTableViewController: UITableViewController {
100107
self.title = "普通"
101108
case 1://自动下拉刷新
102109
self.title = "自动下拉刷新"
103-
headerRefreshView?.autoRefresh()
104-
navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "自动刷新", style: .done, target: self, action: #selector(autoRefresh))
110+
navigationItem.rightBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .refresh, target: self, action: #selector(autoRefresh))
105111
case 2://自动加载更多
106112
self.title = "自动上拉加载更多"
107113
footerRefreshView?.refreshType = .autoFooter;
@@ -125,10 +131,8 @@ class RefreshTableViewController: UITableViewController {
125131
}()
126132
tableView.tableHeaderView = headerPercentLabel
127133
tableView.tableFooterView = footererPercentLabel
128-
129134
headerPercentLabel.text = "0%"
130135
footererPercentLabel.text = headerPercentLabel.text
131-
132136
headerRefreshView?.pullingPercentHandler = { (percent) in
133137
headerPercentLabel.text = String.init(format: "%.2f%%", percent * 100)
134138
}
@@ -204,9 +208,7 @@ class RefreshTableViewController: UITableViewController {
204208
let footerRefreshView = self?.footerRefreshView else {
205209
return
206210
}
207-
208211
weakSelf.rows += 20
209-
210212
if weakSelf.selectedRow == 3 && weakSelf.rows >= 40 {
211213
//
212214
footerRefreshView.showNoMoreData()
@@ -215,7 +217,6 @@ class RefreshTableViewController: UITableViewController {
215217
}
216218
weakSelf.tableView.reloadData()
217219
}
218-
219220
}
220221

221222
// MARK: - Table view data source

SwiftFCXRefreshDemo/SwiftFCXRefreshDemo/ViewController.swift Example/SwiftFCXRefreshDemo/ViewController.swift

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSour
1818
override func viewDidLoad() {
1919
super.viewDidLoad()
2020
title = "FCXRefresh"
21-
navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "自动刷新", style: .done, target: self, action: #selector(autoRefresh))
22-
21+
navigationItem.rightBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .refresh, target: self, action: #selector(autoRefresh))
22+
2323
tableView.delegate = self
2424
tableView.dataSource = self
2525
tableView.rowHeight = 50
@@ -84,5 +84,6 @@ class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSour
8484
refreshVC.selectedRow = indexPath.row
8585
navigationController?.pushViewController(refreshVC, animated: true)
8686
}
87+
8788
}
8889

Package.swift

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// swift-tools-version:5.2
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "SwiftFCXRefresh",
8+
platforms: [.iOS(.v8)],
9+
products: [
10+
.library(
11+
name: "SwiftFCXRefresh",
12+
targets: ["SwiftFCXRefresh"]),
13+
],
14+
targets: [
15+
.target(
16+
name: "SwiftFCXRefresh",
17+
dependencies: []),
18+
.testTarget(
19+
name: "SwiftFCXRefreshTests",
20+
dependencies: ["SwiftFCXRefresh"]),
21+
],
22+
swiftLanguageVersions: [.v5]
23+
)

0 commit comments

Comments
 (0)