Skip to content
This repository was archived by the owner on Nov 19, 2023. It is now read-only.

Commit a46dd8c

Browse files
committed
form support & refactor
1 parent 26a4c77 commit a46dd8c

14 files changed

+392
-360
lines changed

CollectionView.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'CollectionView'
3-
s.version = '1.0.4'
3+
s.version = '2.0.0'
44
s.summary = 'CollectionViews with ease.'
55
s.description = <<-DESC
66
A view model framework around collection views.
@@ -14,7 +14,7 @@ Pod::Spec.new do |s|
1414

1515
s.ios.deployment_target = '11.0'
1616

17-
s.swift_version = '4.2'
17+
s.swift_version = '5.0'
1818
s.source_files = 'Sources/**/*'
1919
s.frameworks = 'UIKit'
2020
end

CollectionView.xcodeproj/project.pbxproj

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,28 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
162ED40D2211ACA000D44AEB /* CollectionViewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4032211ACA000D44AEB /* CollectionViewViewModel.swift */; };
11-
162ED40E2211ACA000D44AEB /* CollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4042211ACA000D44AEB /* CollectionViewCell.swift */; };
12-
162ED40F2211ACA000D44AEB /* CollectionViewSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4052211ACA000D44AEB /* CollectionViewSection.swift */; };
13-
162ED4102211ACA000D44AEB /* CollectionViewCell+Reuse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4062211ACA000D44AEB /* CollectionViewCell+Reuse.swift */; };
14-
162ED4112211ACA000D44AEB /* Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4072211ACA000D44AEB /* Grid.swift */; };
15-
162ED4122211ACA000D44AEB /* CollectionViewSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4082211ACA000D44AEB /* CollectionViewSource.swift */; };
16-
162ED4132211ACA000D44AEB /* CollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162ED4092211ACA000D44AEB /* CollectionViewController.swift */; };
1710
162ED4142211ACA000D44AEB /* CollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 162ED40B2211ACA000D44AEB /* CollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; };
11+
164BF74922725009004B005E /* Source.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74022725009004B005E /* Source.swift */; };
12+
164BF74A22725009004B005E /* CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74122725009004B005E /* CollectionView.swift */; };
13+
164BF74B22725009004B005E /* Cell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74222725009004B005E /* Cell.swift */; };
14+
164BF74C22725009004B005E /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74322725009004B005E /* ViewModel.swift */; };
15+
164BF74D22725009004B005E /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74422725009004B005E /* Extensions.swift */; };
16+
164BF74F22725009004B005E /* Section.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74622725009004B005E /* Section.swift */; };
17+
164BF75022725009004B005E /* Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74722725009004B005E /* Grid.swift */; };
18+
164BF75122725009004B005E /* CollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 164BF74822725009004B005E /* CollectionViewController.swift */; };
1819
/* End PBXBuildFile section */
1920

2021
/* Begin PBXFileReference section */
21-
162ED4032211ACA000D44AEB /* CollectionViewViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewViewModel.swift; sourceTree = "<group>"; };
22-
162ED4042211ACA000D44AEB /* CollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCell.swift; sourceTree = "<group>"; };
23-
162ED4052211ACA000D44AEB /* CollectionViewSection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewSection.swift; sourceTree = "<group>"; };
24-
162ED4062211ACA000D44AEB /* CollectionViewCell+Reuse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CollectionViewCell+Reuse.swift"; sourceTree = "<group>"; };
25-
162ED4072211ACA000D44AEB /* Grid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Grid.swift; sourceTree = "<group>"; };
26-
162ED4082211ACA000D44AEB /* CollectionViewSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewSource.swift; sourceTree = "<group>"; };
27-
162ED4092211ACA000D44AEB /* CollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewController.swift; sourceTree = "<group>"; };
2822
162ED40B2211ACA000D44AEB /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; };
2923
162ED40C2211ACA000D44AEB /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
24+
164BF74022725009004B005E /* Source.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Source.swift; sourceTree = "<group>"; };
25+
164BF74122725009004B005E /* CollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionView.swift; sourceTree = "<group>"; };
26+
164BF74222725009004B005E /* Cell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cell.swift; sourceTree = "<group>"; };
27+
164BF74322725009004B005E /* ViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = "<group>"; };
28+
164BF74422725009004B005E /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
29+
164BF74622725009004B005E /* Section.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Section.swift; sourceTree = "<group>"; };
30+
164BF74722725009004B005E /* Grid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Grid.swift; sourceTree = "<group>"; };
31+
164BF74822725009004B005E /* CollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewController.swift; sourceTree = "<group>"; };
3032
16B94D542211AC7400247232 /* CollectionView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CollectionView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3133
/* End PBXFileReference section */
3234

@@ -41,34 +43,35 @@
4143
/* End PBXFrameworksBuildPhase section */
4244

4345
/* Begin PBXGroup section */
44-
162ED4022211ACA000D44AEB /* Sources */ = {
46+
162ED40A2211ACA000D44AEB /* iOS */ = {
4547
isa = PBXGroup;
4648
children = (
47-
162ED4072211ACA000D44AEB /* Grid.swift */,
48-
162ED4042211ACA000D44AEB /* CollectionViewCell.swift */,
49-
162ED4062211ACA000D44AEB /* CollectionViewCell+Reuse.swift */,
50-
162ED4032211ACA000D44AEB /* CollectionViewViewModel.swift */,
51-
162ED4052211ACA000D44AEB /* CollectionViewSection.swift */,
52-
162ED4082211ACA000D44AEB /* CollectionViewSource.swift */,
53-
162ED4092211ACA000D44AEB /* CollectionViewController.swift */,
49+
162ED40B2211ACA000D44AEB /* CollectionView.h */,
50+
162ED40C2211ACA000D44AEB /* Info.plist */,
5451
);
55-
path = Sources;
52+
path = iOS;
5653
sourceTree = "<group>";
5754
};
58-
162ED40A2211ACA000D44AEB /* iOS */ = {
55+
164BF73F22725009004B005E /* Sources */ = {
5956
isa = PBXGroup;
6057
children = (
61-
162ED40B2211ACA000D44AEB /* CollectionView.h */,
62-
162ED40C2211ACA000D44AEB /* Info.plist */,
58+
164BF74422725009004B005E /* Extensions.swift */,
59+
164BF74822725009004B005E /* CollectionViewController.swift */,
60+
164BF74122725009004B005E /* CollectionView.swift */,
61+
164BF74022725009004B005E /* Source.swift */,
62+
164BF74622725009004B005E /* Section.swift */,
63+
164BF74222725009004B005E /* Cell.swift */,
64+
164BF74322725009004B005E /* ViewModel.swift */,
65+
164BF74722725009004B005E /* Grid.swift */,
6366
);
64-
path = iOS;
67+
path = Sources;
6568
sourceTree = "<group>";
6669
};
6770
16B94D4A2211AC7400247232 = {
6871
isa = PBXGroup;
6972
children = (
73+
164BF73F22725009004B005E /* Sources */,
7074
162ED40A2211ACA000D44AEB /* iOS */,
71-
162ED4022211ACA000D44AEB /* Sources */,
7275
16B94D552211AC7400247232 /* Products */,
7376
);
7477
sourceTree = "<group>";
@@ -124,6 +127,7 @@
124127
TargetAttributes = {
125128
16B94D532211AC7400247232 = {
126129
CreatedOnToolsVersion = 10.1;
130+
LastSwiftMigration = 1020;
127131
};
128132
};
129133
};
@@ -133,6 +137,7 @@
133137
hasScannedForEncodings = 0;
134138
knownRegions = (
135139
en,
140+
Base,
136141
);
137142
mainGroup = 16B94D4A2211AC7400247232;
138143
productRefGroup = 16B94D552211AC7400247232 /* Products */;
@@ -159,13 +164,14 @@
159164
isa = PBXSourcesBuildPhase;
160165
buildActionMask = 2147483647;
161166
files = (
162-
162ED40F2211ACA000D44AEB /* CollectionViewSection.swift in Sources */,
163-
162ED40E2211ACA000D44AEB /* CollectionViewCell.swift in Sources */,
164-
162ED40D2211ACA000D44AEB /* CollectionViewViewModel.swift in Sources */,
165-
162ED4122211ACA000D44AEB /* CollectionViewSource.swift in Sources */,
166-
162ED4132211ACA000D44AEB /* CollectionViewController.swift in Sources */,
167-
162ED4112211ACA000D44AEB /* Grid.swift in Sources */,
168-
162ED4102211ACA000D44AEB /* CollectionViewCell+Reuse.swift in Sources */,
167+
164BF75122725009004B005E /* CollectionViewController.swift in Sources */,
168+
164BF74D22725009004B005E /* Extensions.swift in Sources */,
169+
164BF74A22725009004B005E /* CollectionView.swift in Sources */,
170+
164BF74922725009004B005E /* Source.swift in Sources */,
171+
164BF75022725009004B005E /* Grid.swift in Sources */,
172+
164BF74F22725009004B005E /* Section.swift in Sources */,
173+
164BF74C22725009004B005E /* ViewModel.swift in Sources */,
174+
164BF74B22725009004B005E /* Cell.swift in Sources */,
169175
);
170176
runOnlyForDeploymentPostprocessing = 0;
171177
};
@@ -314,7 +320,7 @@
314320
PRODUCT_BUNDLE_IDENTIFIER = com.tiborbodecs.CollectionView;
315321
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
316322
SKIP_INSTALL = YES;
317-
SWIFT_VERSION = 4.2;
323+
SWIFT_VERSION = 5.0;
318324
TARGETED_DEVICE_FAMILY = "1,2";
319325
};
320326
name = Debug;
@@ -339,7 +345,7 @@
339345
PRODUCT_BUNDLE_IDENTIFIER = com.tiborbodecs.CollectionView;
340346
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
341347
SKIP_INSTALL = YES;
342-
SWIFT_VERSION = 4.2;
348+
SWIFT_VERSION = 5.0;
343349
TARGETED_DEVICE_FAMILY = "1,2";
344350
};
345351
name = Release;

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ CollectionViews with ease!
1111
### CocoaPods
1212

1313
```
14-
source 'https://github.com/CoreKit/CollectionView.git'
15-
pod 'CollectionView'
14+
source 'https://github.com/CoreKit/CocoaPods.git'
15+
pod 'CollectionView', '~> 2.0.0'
1616
```
1717

1818

1919

2020
### Carthage
2121

2222
```
23-
github "CoreKit/CollectionView" "1.0.0"
23+
github "CoreKit/CollectionView" "2.0.0"
2424
```
2525

2626

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import UIKit
1010

11-
open class CollectionViewCell: UICollectionViewCell {
11+
open class Cell: UICollectionViewCell {
1212

1313
public override init(frame: CGRect) {
1414
super.init(frame: frame)
@@ -24,7 +24,7 @@ open class CollectionViewCell: UICollectionViewCell {
2424

2525
open override func awakeFromNib() {
2626
super.awakeFromNib()
27-
27+
2828
self.reset()
2929
}
3030

Sources/CollectionView.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//
2+
// CollectionView.swift
3+
// CollectionView
4+
//
5+
// Created by Tibor Bödecs on 2019. 04. 25..
6+
//
7+
8+
import Foundation
9+
import UIKit
10+
11+
open class CollectionView: UICollectionView {
12+
13+
open var source: Source? = nil {
14+
didSet {
15+
self.source?.register(itemsFor: self)
16+
17+
self.dataSource = self.source
18+
self.delegate = self.source
19+
}
20+
}
21+
}

Sources/CollectionViewCell+Reuse.swift

Lines changed: 0 additions & 70 deletions
This file was deleted.

Sources/CollectionViewController.swift

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,7 @@ import UIKit
1010

1111
open class CollectionViewController: UIViewController {
1212

13-
@IBOutlet open weak var collectionView: UICollectionView!
14-
15-
// MARK: - source
16-
17-
open var source: CollectionViewSource? = nil {
18-
didSet {
19-
self.source?.register(itemsFor: self.collectionView)
20-
21-
self.collectionView.dataSource = self.source
22-
self.collectionView.delegate = self.source
23-
}
24-
}
13+
@IBOutlet open weak var collectionView: CollectionView!
2514

2615
// MARK: - init
2716

@@ -47,28 +36,32 @@ open class CollectionViewController: UIViewController {
4736
// do nothing...
4837
}
4938

50-
// MARK: - view controller
39+
open func layoutConstraints() -> [NSLayoutConstraint] {
40+
return [
41+
self.collectionView.topAnchor.constraint(equalTo: self.view.topAnchor),
42+
self.collectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
43+
self.collectionView.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
44+
self.collectionView.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
45+
]
46+
}
5147

48+
// MARK: - view controller
49+
5250
open override func loadView() {
5351
super.loadView()
5452

55-
let collectionView = UICollectionView.init(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
53+
let collectionView = CollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
5654
collectionView.translatesAutoresizingMaskIntoConstraints = false
5755
self.collectionView = collectionView
5856
self.view.addSubview(self.collectionView)
59-
60-
NSLayoutConstraint.activate([
61-
self.collectionView.topAnchor.constraint(equalTo: self.view.topAnchor),
62-
self.collectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
63-
self.collectionView.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
64-
self.collectionView.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
65-
])
57+
NSLayoutConstraint.activate(self.layoutConstraints())
6658
}
6759

6860
open override func viewDidLoad() {
6961
super.viewDidLoad()
7062

7163
self.view.backgroundColor = .white
64+
7265
self.collectionView.backgroundColor = .clear
7366
self.collectionView.alwaysBounceVertical = true
7467
self.collectionView.showsVerticalScrollIndicator = true

Sources/CollectionViewSection.swift

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)