From 6d418a9df640fbf18769a8add2daa0483ff96e30 Mon Sep 17 00:00:00 2001 From: Econa77 Date: Wed, 18 Mar 2020 16:54:22 +0900 Subject: [PATCH 1/3] Add FSPagerViewBaseCell for easy create custom design cell --- .../BasicExampleViewController.swift | 4 +-- .../PageControlExampleViewController.swift | 4 +-- .../TransformerExampleViewController.swift | 4 +-- .../BasicExampleViewController.m | 4 +-- .../PageControlExampleViewController.m | 4 +-- .../TransformerExampleViewController.m | 4 +-- README.md | 8 +++--- Sources/FSPagerView.swift | 28 +++++++++---------- Sources/FSPagerViewCell.swift | 4 ++- 9 files changed, 33 insertions(+), 31 deletions(-) diff --git a/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift index 57c806b..0ec9a35 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift @@ -163,8 +163,8 @@ class BasicExampleViewController: UIViewController,UITableViewDataSource,UITable return self.numberOfItems } - public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { - let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) + public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = UIImage(named: self.imageNames[index]) cell.imageView?.contentMode = .scaleAspectFill cell.imageView?.clipsToBounds = true diff --git a/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift index 710aca7..4dfc403 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift @@ -215,8 +215,8 @@ class PageControlExampleViewController: UIViewController,UITableViewDataSource,U return self.imageNames.count } - public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { - let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) + public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = UIImage(named: self.imageNames[index]) cell.imageView?.contentMode = .scaleAspectFill return cell diff --git a/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift index 4a66714..705d0e0 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift @@ -99,8 +99,8 @@ class TransformerExampleViewController: UIViewController,FSPagerViewDataSource,F return imageNames.count } - public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { - let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) + public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = UIImage(named: self.imageNames[index]) cell.imageView?.contentMode = .scaleAspectFill cell.imageView?.clipsToBounds = true diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m index fe05e72..83fba71 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m @@ -208,9 +208,9 @@ - (NSInteger)numberOfItemsInPagerView:(FSPagerView *)pagerView return self.numberOfItems; } -- (FSPagerViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +- (FSPagerViewBaseCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index { - FSPagerViewCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; + FSPagerViewCell *cell = (FSPagerViewCell *)[pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; cell.imageView.image = [UIImage imageNamed:self.imageNames[index]]; cell.imageView.contentMode = UIViewContentModeScaleAspectFill; cell.imageView.clipsToBounds = YES; diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m index 3c159bf..0587af9 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m @@ -150,9 +150,9 @@ - (NSInteger)numberOfItemsInPagerView:(FSPagerView *)pagerView return self.imageNames.count; } -- (FSPagerViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +- (FSPagerViewBaseCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index { - FSPagerViewCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; + FSPagerViewCell *cell = (FSPagerViewCell *)[pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; cell.imageView.contentMode = UIViewContentModeScaleAspectFill; cell.imageView.image = [UIImage imageNamed:self.imageNames[index]]; return cell; diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m index 1681085..80f5b3c 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m @@ -80,9 +80,9 @@ - (NSInteger)numberOfItemsInPagerView:(FSPagerView *)pagerView return self.imageNames.count; } -- (FSPagerViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +- (FSPagerViewBaseCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index { - FSPagerViewCell * cell = [pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; + FSPagerViewCell * cell = (FSPagerViewCell *)[pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; cell.imageView.image = [UIImage imageNamed:self.imageNames[index]]; cell.imageView.contentMode = UIViewContentModeScaleAspectFill; cell.imageView.clipsToBounds = YES; diff --git a/README.md b/README.md index c3ff8ec..c31c506 100644 --- a/README.md +++ b/README.md @@ -309,8 +309,8 @@ public func numberOfItems(in pagerView: FSPagerView) -> Int { return numberOfItems } -public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { - let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) +public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = ... cell.textLabel?.text = ... return cell @@ -348,14 +348,14 @@ func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) --- ```swift -func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewCell, forItemAt index: Int) +func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewBaseCell, forItemAt index: Int) ``` > Tells the delegate that the specified cell is about to be displayed in the pager view. --- ```swift -func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewCell, forItemAt index: Int) +func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewBaseCell, forItemAt index: Int) ``` > Tells the delegate that the specified cell was removed from the pager view. diff --git a/Sources/FSPagerView.swift b/Sources/FSPagerView.swift index 7fb17d9..6dc0402 100644 --- a/Sources/FSPagerView.swift +++ b/Sources/FSPagerView.swift @@ -21,7 +21,7 @@ public protocol FSPagerViewDataSource: NSObjectProtocol { /// Asks your data source object for the cell that corresponds to the specified item in the pager view. @objc(pagerView:cellForItemAtIndex:) - func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell } @@ -46,11 +46,11 @@ public protocol FSPagerViewDelegate: NSObjectProtocol { /// Tells the delegate that the specified cell is about to be displayed in the pager view. @objc(pagerView:willDisplayCell:forItemAtIndex:) - optional func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewCell, forItemAt index: Int) + optional func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewBaseCell, forItemAt index: Int) /// Tells the delegate that the specified cell was removed from the pager view. @objc(pagerView:didEndDisplayingCell:forItemAtIndex:) - optional func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewCell, forItemAt index: Int) + optional func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewBaseCell, forItemAt index: Int) /// Tells the delegate when the pager view is about to start scrolling the content. @objc(pagerViewWillBeginDragging:) @@ -379,7 +379,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega return } let index = indexPath.item % self.numberOfItems - function(self,cell as! FSPagerViewCell,index) + function(self,cell as! FSPagerViewBaseCell,index) } public func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { @@ -387,7 +387,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega return } let index = indexPath.item % self.numberOfItems - function(self,cell as! FSPagerViewCell,index) + function(self,cell as! FSPagerViewBaseCell,index) } public func scrollViewDidScroll(_ scrollView: UIScrollView) { @@ -451,7 +451,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// Register a nib file for use in creating new pager view cells. /// /// - Parameters: - /// - nib: The nib object containing the cell object. The nib file must contain only one top-level object and that object must be of the type FSPagerViewCell. + /// - nib: The nib object containing the cell object. The nib file must contain only one top-level object and that object must be of the type FSPagerViewBaseCell. /// - identifier: The reuse identifier to associate with the specified nib file. This parameter must not be nil and must not be an empty string. @objc(registerNib:forCellWithReuseIdentifier:) open func register(_ nib: UINib?, forCellWithReuseIdentifier identifier: String) { @@ -463,15 +463,15 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// - Parameters: /// - identifier: The reuse identifier for the specified cell. This parameter must not be nil. /// - index: The index specifying the location of the cell. - /// - Returns: A valid FSPagerViewCell object. + /// - Returns: A valid FSPagerViewBaseCell object. @objc(dequeueReusableCellWithReuseIdentifier:atIndex:) - open func dequeueReusableCell(withReuseIdentifier identifier: String, at index: Int) -> FSPagerViewCell { + open func dequeueReusableCell(withReuseIdentifier identifier: String, at index: Int) -> FSPagerViewBaseCell { let indexPath = IndexPath(item: index, section: self.dequeingSection) let cell = self.collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) - guard cell.isKind(of: FSPagerViewCell.self) else { - fatalError("Cell class must be subclass of FSPagerViewCell") + guard cell.isKind(of: FSPagerViewBaseCell.self) else { + fatalError("Cell class must be subclass of FSPagerViewBaseCell") } - return cell as! FSPagerViewCell + return cell as! FSPagerViewBaseCell } /// Reloads all of the data for the collection view. @@ -532,7 +532,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// - Parameter cell: The cell object whose index you want. /// - Returns: The index of the cell or NSNotFound if the specified cell is not in the pager view. @objc(indexForCell:) - open func index(for cell: FSPagerViewCell) -> Int { + open func index(for cell: FSPagerViewBaseCell) -> Int { guard let indexPath = self.collectionView.indexPath(for: cell) else { return NSNotFound } @@ -544,9 +544,9 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// - Parameter index: The index that specifies the position of the cell. /// - Returns: The cell object at the corresponding position or nil if the cell is not visible or index is out of range. @objc(cellForItemAtIndex:) - open func cellForItem(at index: Int) -> FSPagerViewCell? { + open func cellForItem(at index: Int) -> FSPagerViewBaseCell? { let indexPath = self.nearbyIndexPath(for: index) - return self.collectionView.cellForItem(at: indexPath) as? FSPagerViewCell + return self.collectionView.cellForItem(at: indexPath) as? FSPagerViewBaseCell } // MARK: - Private functions diff --git a/Sources/FSPagerViewCell.swift b/Sources/FSPagerViewCell.swift index 286eb38..367e757 100644 --- a/Sources/FSPagerViewCell.swift +++ b/Sources/FSPagerViewCell.swift @@ -8,7 +8,9 @@ import UIKit -open class FSPagerViewCell: UICollectionViewCell { +open class FSPagerViewBaseCell: UICollectionViewCell {} + +open class FSPagerViewCell: FSPagerViewBaseCell { /// Returns the label used for the main textual content of the pager view cell. @objc From 2c008bea92ea709b4689a6571b06dbc5783408c3 Mon Sep 17 00:00:00 2001 From: Econa77 Date: Wed, 18 Mar 2020 17:07:35 +0900 Subject: [PATCH 2/3] Use UICollectionViewCell --- .../BasicExampleViewController.swift | 2 +- .../PageControlExampleViewController.swift | 2 +- .../TransformerExampleViewController.swift | 2 +- .../BasicExampleViewController.m | 2 +- .../PageControlExampleViewController.m | 2 +- .../TransformerExampleViewController.m | 2 +- Sources/FSPagerView.swift | 27 +++++++++---------- Sources/FSPagerViewCell.swift | 4 +-- 8 files changed, 19 insertions(+), 24 deletions(-) diff --git a/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift index 0ec9a35..92d340b 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift @@ -163,7 +163,7 @@ class BasicExampleViewController: UIViewController,UITableViewDataSource,UITable return self.numberOfItems } - public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> UICollectionViewCell { let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = UIImage(named: self.imageNames[index]) cell.imageView?.contentMode = .scaleAspectFill diff --git a/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift index 4dfc403..03c6c1f 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift @@ -215,7 +215,7 @@ class PageControlExampleViewController: UIViewController,UITableViewDataSource,U return self.imageNames.count } - public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> UICollectionViewCell { let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = UIImage(named: self.imageNames[index]) cell.imageView?.contentMode = .scaleAspectFill diff --git a/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift index 705d0e0..0818f26 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/TransformerExampleViewController.swift @@ -99,7 +99,7 @@ class TransformerExampleViewController: UIViewController,FSPagerViewDataSource,F return imageNames.count } - public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { + public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> UICollectionViewCell { let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = UIImage(named: self.imageNames[index]) cell.imageView?.contentMode = .scaleAspectFill diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m index 83fba71..80aff77 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/BasicExampleViewController.m @@ -208,7 +208,7 @@ - (NSInteger)numberOfItemsInPagerView:(FSPagerView *)pagerView return self.numberOfItems; } -- (FSPagerViewBaseCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +- (UICollectionViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index { FSPagerViewCell *cell = (FSPagerViewCell *)[pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; cell.imageView.image = [UIImage imageNamed:self.imageNames[index]]; diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m index 0587af9..b3d9846 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/PageControlExampleViewController.m @@ -150,7 +150,7 @@ - (NSInteger)numberOfItemsInPagerView:(FSPagerView *)pagerView return self.imageNames.count; } -- (FSPagerViewBaseCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +- (UICollectionViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index { FSPagerViewCell *cell = (FSPagerViewCell *)[pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; cell.imageView.contentMode = UIViewContentModeScaleAspectFill; diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m index 80f5b3c..e4741e5 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/TransformerExampleViewController.m @@ -80,7 +80,7 @@ - (NSInteger)numberOfItemsInPagerView:(FSPagerView *)pagerView return self.imageNames.count; } -- (FSPagerViewBaseCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +- (UICollectionViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index { FSPagerViewCell * cell = (FSPagerViewCell *)[pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; cell.imageView.image = [UIImage imageNamed:self.imageNames[index]]; diff --git a/Sources/FSPagerView.swift b/Sources/FSPagerView.swift index 6dc0402..164c021 100644 --- a/Sources/FSPagerView.swift +++ b/Sources/FSPagerView.swift @@ -21,7 +21,7 @@ public protocol FSPagerViewDataSource: NSObjectProtocol { /// Asks your data source object for the cell that corresponds to the specified item in the pager view. @objc(pagerView:cellForItemAtIndex:) - func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> UICollectionViewCell } @@ -46,11 +46,11 @@ public protocol FSPagerViewDelegate: NSObjectProtocol { /// Tells the delegate that the specified cell is about to be displayed in the pager view. @objc(pagerView:willDisplayCell:forItemAtIndex:) - optional func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewBaseCell, forItemAt index: Int) + optional func pagerView(_ pagerView: FSPagerView, willDisplay cell: UICollectionViewCell, forItemAt index: Int) /// Tells the delegate that the specified cell was removed from the pager view. @objc(pagerView:didEndDisplayingCell:forItemAtIndex:) - optional func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewBaseCell, forItemAt index: Int) + optional func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: UICollectionViewCell, forItemAt index: Int) /// Tells the delegate when the pager view is about to start scrolling the content. @objc(pagerViewWillBeginDragging:) @@ -379,7 +379,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega return } let index = indexPath.item % self.numberOfItems - function(self,cell as! FSPagerViewBaseCell,index) + function(self,cell,index) } public func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { @@ -387,7 +387,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega return } let index = indexPath.item % self.numberOfItems - function(self,cell as! FSPagerViewBaseCell,index) + function(self,cell,index) } public func scrollViewDidScroll(_ scrollView: UIScrollView) { @@ -451,7 +451,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// Register a nib file for use in creating new pager view cells. /// /// - Parameters: - /// - nib: The nib object containing the cell object. The nib file must contain only one top-level object and that object must be of the type FSPagerViewBaseCell. + /// - nib: The nib object containing the cell object. The nib file must contain only one top-level object and that object must be of the type UICollectionViewCell. /// - identifier: The reuse identifier to associate with the specified nib file. This parameter must not be nil and must not be an empty string. @objc(registerNib:forCellWithReuseIdentifier:) open func register(_ nib: UINib?, forCellWithReuseIdentifier identifier: String) { @@ -463,15 +463,12 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// - Parameters: /// - identifier: The reuse identifier for the specified cell. This parameter must not be nil. /// - index: The index specifying the location of the cell. - /// - Returns: A valid FSPagerViewBaseCell object. + /// - Returns: A valid UICollectionViewCell object. @objc(dequeueReusableCellWithReuseIdentifier:atIndex:) - open func dequeueReusableCell(withReuseIdentifier identifier: String, at index: Int) -> FSPagerViewBaseCell { + open func dequeueReusableCell(withReuseIdentifier identifier: String, at index: Int) -> UICollectionViewCell { let indexPath = IndexPath(item: index, section: self.dequeingSection) let cell = self.collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) - guard cell.isKind(of: FSPagerViewBaseCell.self) else { - fatalError("Cell class must be subclass of FSPagerViewBaseCell") - } - return cell as! FSPagerViewBaseCell + return cell } /// Reloads all of the data for the collection view. @@ -532,7 +529,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// - Parameter cell: The cell object whose index you want. /// - Returns: The index of the cell or NSNotFound if the specified cell is not in the pager view. @objc(indexForCell:) - open func index(for cell: FSPagerViewBaseCell) -> Int { + open func index(for cell: UICollectionViewCell) -> Int { guard let indexPath = self.collectionView.indexPath(for: cell) else { return NSNotFound } @@ -544,9 +541,9 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// - Parameter index: The index that specifies the position of the cell. /// - Returns: The cell object at the corresponding position or nil if the cell is not visible or index is out of range. @objc(cellForItemAtIndex:) - open func cellForItem(at index: Int) -> FSPagerViewBaseCell? { + open func cellForItem(at index: Int) -> UICollectionViewCell? { let indexPath = self.nearbyIndexPath(for: index) - return self.collectionView.cellForItem(at: indexPath) as? FSPagerViewBaseCell + return self.collectionView.cellForItem(at: indexPath) } // MARK: - Private functions diff --git a/Sources/FSPagerViewCell.swift b/Sources/FSPagerViewCell.swift index 367e757..286eb38 100644 --- a/Sources/FSPagerViewCell.swift +++ b/Sources/FSPagerViewCell.swift @@ -8,9 +8,7 @@ import UIKit -open class FSPagerViewBaseCell: UICollectionViewCell {} - -open class FSPagerViewCell: FSPagerViewBaseCell { +open class FSPagerViewCell: UICollectionViewCell { /// Returns the label used for the main textual content of the pager view cell. @objc From fca35451b57e8b4a1483403e63d4d6626126ab2e Mon Sep 17 00:00:00 2001 From: Econa77 Date: Wed, 18 Mar 2020 17:10:52 +0900 Subject: [PATCH 3/3] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c31c506..4785a24 100644 --- a/README.md +++ b/README.md @@ -309,7 +309,7 @@ public func numberOfItems(in pagerView: FSPagerView) -> Int { return numberOfItems } -public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewBaseCell { +public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> UICollectionViewCell { let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FSPagerViewCell cell.imageView?.image = ... cell.textLabel?.text = ... @@ -348,14 +348,14 @@ func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) --- ```swift -func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewBaseCell, forItemAt index: Int) +func pagerView(_ pagerView: FSPagerView, willDisplay cell: UICollectionViewCell, forItemAt index: Int) ``` > Tells the delegate that the specified cell is about to be displayed in the pager view. --- ```swift -func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewBaseCell, forItemAt index: Int) +func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: UICollectionViewCell, forItemAt index: Int) ``` > Tells the delegate that the specified cell was removed from the pager view.