Skip to content

Commit 4eb807a

Browse files
committed
Add the isPagingEnabled and contentInset property configurations, add adaptation to any UICollectionViewCell type, and add the ability to load nib UICollectionViewCell.
1 parent 759fc38 commit 4eb807a

Some content is hidden

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

65 files changed

+2615
-105
lines changed

Example/JXBanner.xcodeproj/project.pbxproj

Lines changed: 89 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,25 @@
1010
1F30F28D22EFEF2A007ABBED /* JXCustomTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F30F28C22EFEF2A007ABBED /* JXCustomTransform.swift */; };
1111
1F30F29222F022BA007ABBED /* JXDefaultVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F30F29122F022BA007ABBED /* JXDefaultVC.swift */; };
1212
1F30F29422F022D3007ABBED /* JXCustomVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F30F29322F022D3007ABBED /* JXCustomVC.swift */; };
13+
1F35B04A237FD88100076E3A /* JXScrollViewVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F35B049237FD88100076E3A /* JXScrollViewVC.swift */; };
14+
1F35B04D237FDAD100076E3A /* JXScrollViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F35B04B237FDAD100076E3A /* JXScrollViewCell.swift */; };
15+
1F35B04E237FDAD100076E3A /* JXScrollViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1F35B04C237FDAD100076E3A /* JXScrollViewCell.xib */; };
16+
1F41C6432331D9AD00B83DC4 /* 0.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6332331D9AB00B83DC4 /* 0.jpg */; };
17+
1F41C6442331D9AD00B83DC4 /* 10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6342331D9AC00B83DC4 /* 10.jpg */; };
18+
1F41C6452331D9AD00B83DC4 /* 13.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6352331D9AC00B83DC4 /* 13.jpg */; };
19+
1F41C6462331D9AD00B83DC4 /* 3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6362331D9AC00B83DC4 /* 3.jpg */; };
20+
1F41C6472331D9AD00B83DC4 /* 8.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6372331D9AC00B83DC4 /* 8.jpg */; };
21+
1F41C6482331D9AD00B83DC4 /* 12.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6382331D9AC00B83DC4 /* 12.jpg */; };
22+
1F41C6492331D9AD00B83DC4 /* 9.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6392331D9AC00B83DC4 /* 9.jpg */; };
23+
1F41C64A2331D9AD00B83DC4 /* 5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C63A2331D9AC00B83DC4 /* 5.jpg */; };
24+
1F41C64B2331D9AD00B83DC4 /* 11.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C63B2331D9AC00B83DC4 /* 11.jpg */; };
25+
1F41C64C2331D9AD00B83DC4 /* 4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C63C2331D9AC00B83DC4 /* 4.jpg */; };
26+
1F41C64D2331D9AD00B83DC4 /* 2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C63D2331D9AC00B83DC4 /* 2.jpg */; };
27+
1F41C64E2331D9AD00B83DC4 /* 1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C63E2331D9AD00B83DC4 /* 1.jpg */; };
28+
1F41C64F2331D9AD00B83DC4 /* 14.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C63F2331D9AD00B83DC4 /* 14.jpg */; };
29+
1F41C6502331D9AD00B83DC4 /* 15.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6402331D9AD00B83DC4 /* 15.jpg */; };
30+
1F41C6512331D9AD00B83DC4 /* 7.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6412331D9AD00B83DC4 /* 7.jpg */; };
31+
1F41C6522331D9AD00B83DC4 /* 6.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1F41C6422331D9AD00B83DC4 /* 6.jpg */; };
1332
1FAA5AF322A26CA400CC3696 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1FAA5AF222A26CA400CC3696 /* Main.storyboard */; };
1433
1FD96C4922F03806003972F1 /* JXTransformCustomVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD96C4822F03806003972F1 /* JXTransformCustomVC.swift */; };
1534
1FEE2D0522F5DE170002BAE5 /* JXCycleWayVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEE2D0422F5DE170002BAE5 /* JXCycleWayVC.swift */; };
@@ -34,6 +53,25 @@
3453
1F30F28C22EFEF2A007ABBED /* JXCustomTransform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXCustomTransform.swift; sourceTree = "<group>"; };
3554
1F30F29122F022BA007ABBED /* JXDefaultVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXDefaultVC.swift; sourceTree = "<group>"; };
3655
1F30F29322F022D3007ABBED /* JXCustomVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXCustomVC.swift; sourceTree = "<group>"; };
56+
1F35B049237FD88100076E3A /* JXScrollViewVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXScrollViewVC.swift; sourceTree = "<group>"; };
57+
1F35B04B237FDAD100076E3A /* JXScrollViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXScrollViewCell.swift; sourceTree = "<group>"; };
58+
1F35B04C237FDAD100076E3A /* JXScrollViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = JXScrollViewCell.xib; sourceTree = "<group>"; };
59+
1F41C6332331D9AB00B83DC4 /* 0.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 0.jpg; sourceTree = "<group>"; };
60+
1F41C6342331D9AC00B83DC4 /* 10.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 10.jpg; sourceTree = "<group>"; };
61+
1F41C6352331D9AC00B83DC4 /* 13.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 13.jpg; sourceTree = "<group>"; };
62+
1F41C6362331D9AC00B83DC4 /* 3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 3.jpg; sourceTree = "<group>"; };
63+
1F41C6372331D9AC00B83DC4 /* 8.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 8.jpg; sourceTree = "<group>"; };
64+
1F41C6382331D9AC00B83DC4 /* 12.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 12.jpg; sourceTree = "<group>"; };
65+
1F41C6392331D9AC00B83DC4 /* 9.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 9.jpg; sourceTree = "<group>"; };
66+
1F41C63A2331D9AC00B83DC4 /* 5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 5.jpg; sourceTree = "<group>"; };
67+
1F41C63B2331D9AC00B83DC4 /* 11.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 11.jpg; sourceTree = "<group>"; };
68+
1F41C63C2331D9AC00B83DC4 /* 4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 4.jpg; sourceTree = "<group>"; };
69+
1F41C63D2331D9AC00B83DC4 /* 2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 2.jpg; sourceTree = "<group>"; };
70+
1F41C63E2331D9AD00B83DC4 /* 1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 1.jpg; sourceTree = "<group>"; };
71+
1F41C63F2331D9AD00B83DC4 /* 14.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 14.jpg; sourceTree = "<group>"; };
72+
1F41C6402331D9AD00B83DC4 /* 15.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 15.jpg; sourceTree = "<group>"; };
73+
1F41C6412331D9AD00B83DC4 /* 7.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 7.jpg; sourceTree = "<group>"; };
74+
1F41C6422331D9AD00B83DC4 /* 6.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 6.jpg; sourceTree = "<group>"; };
3775
1FAA5AF222A26CA400CC3696 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
3876
1FD96C4822F03806003972F1 /* JXTransformCustomVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXTransformCustomVC.swift; sourceTree = "<group>"; };
3977
1FEE2D0422F5DE170002BAE5 /* JXCycleWayVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JXCycleWayVC.swift; sourceTree = "<group>"; };
@@ -78,11 +116,37 @@
78116
1F30F29122F022BA007ABBED /* JXDefaultVC.swift */,
79117
1F30F29322F022D3007ABBED /* JXCustomVC.swift */,
80118
1FEE2D0422F5DE170002BAE5 /* JXCycleWayVC.swift */,
119+
1F35B049237FD88100076E3A /* JXScrollViewVC.swift */,
120+
1F35B04B237FDAD100076E3A /* JXScrollViewCell.swift */,
121+
1F35B04C237FDAD100076E3A /* JXScrollViewCell.xib */,
81122
1FEE2D0622F5E0E00002BAE5 /* JXTransformCustomVC */,
82123
);
83124
name = Demo;
84125
sourceTree = "<group>";
85126
};
127+
1F41C6242331D36A00B83DC4 /* source */ = {
128+
isa = PBXGroup;
129+
children = (
130+
1F41C6332331D9AB00B83DC4 /* 0.jpg */,
131+
1F41C63E2331D9AD00B83DC4 /* 1.jpg */,
132+
1F41C63D2331D9AC00B83DC4 /* 2.jpg */,
133+
1F41C6362331D9AC00B83DC4 /* 3.jpg */,
134+
1F41C63C2331D9AC00B83DC4 /* 4.jpg */,
135+
1F41C63A2331D9AC00B83DC4 /* 5.jpg */,
136+
1F41C6422331D9AD00B83DC4 /* 6.jpg */,
137+
1F41C6412331D9AD00B83DC4 /* 7.jpg */,
138+
1F41C6372331D9AC00B83DC4 /* 8.jpg */,
139+
1F41C6392331D9AC00B83DC4 /* 9.jpg */,
140+
1F41C6342331D9AC00B83DC4 /* 10.jpg */,
141+
1F41C63B2331D9AC00B83DC4 /* 11.jpg */,
142+
1F41C6382331D9AC00B83DC4 /* 12.jpg */,
143+
1F41C6352331D9AC00B83DC4 /* 13.jpg */,
144+
1F41C63F2331D9AD00B83DC4 /* 14.jpg */,
145+
1F41C6402331D9AD00B83DC4 /* 15.jpg */,
146+
);
147+
path = source;
148+
sourceTree = "<group>";
149+
};
86150
1FEE2D0622F5E0E00002BAE5 /* JXTransformCustomVC */ = {
87151
isa = PBXGroup;
88152
children = (
@@ -133,6 +197,7 @@
133197
607FACD21AFB9204008FA782 /* Example for JXBanner */ = {
134198
isa = PBXGroup;
135199
children = (
200+
1F41C6242331D36A00B83DC4 /* source */,
136201
1F30F28E22F02272007ABBED /* Demo */,
137202
607FACD51AFB9204008FA782 /* AppDelegate.swift */,
138203
607FACDC1AFB9204008FA782 /* Images.xcassets */,
@@ -231,7 +296,7 @@
231296
TargetAttributes = {
232297
607FACCF1AFB9204008FA782 = {
233298
CreatedOnToolsVersion = 6.3.1;
234-
DevelopmentTeam = ATRZR4BSXQ;
299+
DevelopmentTeam = 29HA8N9RQ5;
235300
LastSwiftMigration = 0900;
236301
ProvisioningStyle = Automatic;
237302
};
@@ -267,9 +332,26 @@
267332
isa = PBXResourcesBuildPhase;
268333
buildActionMask = 2147483647;
269334
files = (
335+
1F41C64A2331D9AD00B83DC4 /* 5.jpg in Resources */,
336+
1F41C6442331D9AD00B83DC4 /* 10.jpg in Resources */,
337+
1F41C64D2331D9AD00B83DC4 /* 2.jpg in Resources */,
338+
1F41C6522331D9AD00B83DC4 /* 6.jpg in Resources */,
339+
1F41C6452331D9AD00B83DC4 /* 13.jpg in Resources */,
340+
1F41C64B2331D9AD00B83DC4 /* 11.jpg in Resources */,
341+
1F41C6482331D9AD00B83DC4 /* 12.jpg in Resources */,
342+
1F41C6492331D9AD00B83DC4 /* 9.jpg in Resources */,
343+
1F41C6432331D9AD00B83DC4 /* 0.jpg in Resources */,
270344
1FAA5AF322A26CA400CC3696 /* Main.storyboard in Resources */,
345+
1F41C64E2331D9AD00B83DC4 /* 1.jpg in Resources */,
346+
1F41C64F2331D9AD00B83DC4 /* 14.jpg in Resources */,
347+
1F41C6502331D9AD00B83DC4 /* 15.jpg in Resources */,
348+
1F35B04E237FDAD100076E3A /* JXScrollViewCell.xib in Resources */,
349+
1F41C6472331D9AD00B83DC4 /* 8.jpg in Resources */,
271350
607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */,
351+
1F41C6462331D9AD00B83DC4 /* 3.jpg in Resources */,
352+
1F41C6512331D9AD00B83DC4 /* 7.jpg in Resources */,
272353
607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */,
354+
1F41C64C2331D9AD00B83DC4 /* 4.jpg in Resources */,
273355
);
274356
runOnlyForDeploymentPostprocessing = 0;
275357
};
@@ -343,6 +425,8 @@
343425
1FEE2D0522F5DE170002BAE5 /* JXCycleWayVC.swift in Sources */,
344426
1F30F28D22EFEF2A007ABBED /* JXCustomTransform.swift in Sources */,
345427
1F30F29422F022D3007ABBED /* JXCustomVC.swift in Sources */,
428+
1F35B04D237FDAD100076E3A /* JXScrollViewCell.swift in Sources */,
429+
1F35B04A237FD88100076E3A /* JXScrollViewVC.swift in Sources */,
346430
607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */,
347431
);
348432
runOnlyForDeploymentPostprocessing = 0;
@@ -483,9 +567,9 @@
483567
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
484568
CODE_SIGN_IDENTITY = "iPhone Developer";
485569
CODE_SIGN_STYLE = Automatic;
486-
DEVELOPMENT_TEAM = ATRZR4BSXQ;
570+
DEVELOPMENT_TEAM = 29HA8N9RQ5;
487571
INFOPLIST_FILE = JXBanner/Info.plist;
488-
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
572+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
489573
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
490574
MODULE_NAME = ExampleApp;
491575
PRODUCT_BUNDLE_IDENTIFIER = com.italkbb.sdfsdfsdf;
@@ -503,9 +587,9 @@
503587
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
504588
CODE_SIGN_IDENTITY = "iPhone Developer";
505589
CODE_SIGN_STYLE = Automatic;
506-
DEVELOPMENT_TEAM = ATRZR4BSXQ;
590+
DEVELOPMENT_TEAM = 29HA8N9RQ5;
507591
INFOPLIST_FILE = JXBanner/Info.plist;
508-
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
592+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
509593
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
510594
MODULE_NAME = ExampleApp;
511595
PRODUCT_BUNDLE_IDENTIFIER = com.italkbb.sdfsdfsdf;

Example/JXBanner/JXCustomVC.swift

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class JXCustomVC: UIViewController {
1919
lazy var linearBanner: JXBanner = {[weak self] in
2020
let banner = JXBanner()
2121
banner.placeholderImgView.image = UIImage(named: "banner_placeholder")
22-
banner.backgroundColor = UIColor.black
2322
banner.indentify = "linearBanner"
2423
banner.delegate = self
2524
banner.dataSource = self
@@ -29,26 +28,42 @@ class JXCustomVC: UIViewController {
2928
lazy var converflowBanner: JXBanner = {
3029
let banner = JXBanner()
3130
banner.placeholderImgView.image = UIImage(named: "banner_placeholder")
32-
banner.backgroundColor = UIColor.black
3331
banner.indentify = "converflowBanner"
3432
banner.delegate = self
3533
banner.dataSource = self
3634
return banner
3735
}()
3836

37+
lazy var customBanner: JXBanner = {
38+
let banner = JXBanner()
39+
banner.placeholderImgView.image = UIImage(named: "banner_placeholder")
40+
banner.delegate = self
41+
banner.dataSource = self
42+
return banner
43+
}()
44+
3945
override func viewDidLoad() {
4046
super.viewDidLoad()
47+
4148
view.addSubview(linearBanner)
4249
view.addSubview(converflowBanner)
50+
view.addSubview(customBanner)
51+
4352
linearBanner.snp.makeConstraints {(maker) in
4453
maker.left.right.equalTo(view)
45-
maker.height.equalTo(200)
54+
maker.height.equalTo(150)
4655
maker.top.equalTo(view.snp_top).offset(100)
4756
}
4857

4958
converflowBanner.snp.makeConstraints {(maker) in
5059
maker.left.right.height.equalTo(linearBanner)
51-
maker.top.equalTo(linearBanner.snp_bottom).offset(100)
60+
maker.top.equalTo(linearBanner.snp_bottom).offset(50)
61+
}
62+
63+
customBanner.snp.makeConstraints {(maker) in
64+
maker.left.right.equalTo(linearBanner)
65+
maker.height.equalTo(200)
66+
maker.top.equalTo(converflowBanner.snp_bottom).offset(50)
5267
}
5368

5469
self.automaticallyAdjustsScrollViewInsets = false
@@ -68,9 +83,12 @@ extension JXCustomVC: JXBannerDataSource {
6883
if banner.indentify == "linearBanner" {
6984
return JXBannerCellRegister(type: JXBannerCell.self,
7085
reuseIdentifier: "LinearBannerCell")
71-
}else {
86+
}else if banner.indentify == "converflowBanner" {
7287
return JXBannerCellRegister(type: JXBannerCell.self,
7388
reuseIdentifier: "ConverflowBannerCell")
89+
}else {
90+
return JXBannerCellRegister(type: JXBannerCell.self,
91+
reuseIdentifier: "JXTransformCustomVCCell")
7492
}
7593
}
7694

@@ -79,12 +97,21 @@ extension JXCustomVC: JXBannerDataSource {
7997

8098
func jxBanner(_ banner: JXBannerType,
8199
cellForItemAt index: Int,
82-
cell: JXBannerBaseCell)
83-
-> JXBannerBaseCell {
84-
let tempCell: JXBannerCell = cell as! JXBannerCell
100+
cell: UICollectionViewCell)
101+
-> UICollectionViewCell {
102+
let tempCell = cell as! JXBannerCell
85103
tempCell.layer.cornerRadius = 8
86104
tempCell.layer.masksToBounds = true
87-
tempCell.imageView.image = UIImage(named: "banner_placeholder")
105+
tempCell.layer.borderColor = UIColor.gray.cgColor
106+
tempCell.layer.borderWidth = 1
107+
if banner.indentify == "linearBanner" {
108+
tempCell.imageView.image = UIImage(named: "\(index).jpg")
109+
}else if banner.indentify == "converflowBanner" {
110+
tempCell.imageView.image = UIImage(named: "\(index+5).jpg")
111+
}else {
112+
tempCell.imageView.image = UIImage(named: "\(index+10).jpg")
113+
}
114+
88115
tempCell.msgLabel.text = String(index) + "---来喽来喽,他真的来喽~"
89116
return tempCell
90117
}
@@ -111,20 +138,26 @@ extension JXCustomVC: JXBannerDataSource {
111138
if banner.indentify == "linearBanner" {
112139
return layoutParams
113140
.layoutType(JXBannerTransformLinear())
114-
.itemSize(CGSize(width: 250, height: 190))
141+
.itemSize(CGSize(width: 300, height: 150))
115142
.itemSpacing(10)
116143
.rateOfChange(0.8)
117144
.minimumScale(0.7)
118145
.rateHorisonMargin(0.5)
119146
.minimumAlpha(0.8)
120-
}else {
147+
}else if banner.indentify == "converflowBanner" {
121148
return layoutParams
122149
.layoutType(JXBannerTransformCoverflow())
123-
.itemSize(CGSize(width: 300, height: 190))
150+
.itemSize(CGSize(width: 300, height: 150))
124151
.itemSpacing(0)
125152
.maximumAngle(0.25)
126153
.rateHorisonMargin(0.3)
127154
.minimumAlpha(0.8)
155+
}else {
156+
return layoutParams
157+
.layoutType(JXCustomTransform())
158+
.itemSize(CGSize(width: 280, height: 140))
159+
.maximumAngle(0.1)
160+
.itemSpacing(10)
128161
}
129162
}
130163

@@ -195,5 +228,7 @@ extension JXCustomVC: JXBannerDelegate {
195228
func jxBanner(_ banner: JXBannerType, center index: Int) {
196229
// print(index)
197230
}
231+
232+
198233
}
199234

0 commit comments

Comments
 (0)