Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AfrozZaheer/AZCollectionViewController
Easy way to integrate pagination with dummy views in CollectionView, make Instagram "Discover" within minutes.
https://github.com/AfrozZaheer/AZCollectionViewController
Last synced: 3 months ago
JSON representation
Easy way to integrate pagination with dummy views in CollectionView, make Instagram "Discover" within minutes.
- Host: GitHub
- URL: https://github.com/AfrozZaheer/AZCollectionViewController
- Owner: AfrozZaheer
- License: mit
- Created: 2018-01-09T11:25:19.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-04-17T11:32:24.000Z (over 4 years ago)
- Last Synced: 2024-04-20T17:45:40.058Z (7 months ago)
- Language: Swift
- Homepage: https://www.cocoacontrols.com/controls/azcollectionviewcontroller
- Size: 3.51 MB
- Stars: 94
- Watchers: 5
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover within minutes. (UI / Table View / Collection View)
- awesome-swift - AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover withing minutes. (Libs / UI)
- awesome-cocoa - AZCollectionViewController
- awesome-swift - AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover withing minutes. (Libs / UI)
- awesome-ios-star - AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover within minutes. (UI / Table View / Collection View)
- fucking-awesome-swift - AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover withing minutes. (Libs / UI)
- awesome-swift - AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram 'Discover' within minutes. ` 📝 3 years ago` (UI [🔝](#readme))
README
# AZCollectionView Controller
[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
[![Swift version](https://img.shields.io/badge/swift%20-4.0-orange.svg)](https://img.shields.io/badge/swift%20-4.0-orange.svg)
[![Support Dependecy Manager](https://img.shields.io/badge/support-CocoaPods-red.svg?style=flat.svg)](https://img.shields.io/badge/support-CocoaPods-red.svg?style=flat.svg)
[![Version](https://img.shields.io/cocoapods/v/AZCollectionViewController.svg?style=flat)](https://cocoapods.org/pods/AZCollectionViewController)
[![License](https://img.shields.io/badge/License-MIT-brightgreen.svg?style=flat.svg)](https://img.shields.io/badge/License-MIT-brightgreen.svg?style=flat.svg)
[![Platform](https://img.shields.io/badge/platform-ios-lightgrey.svg)](https://cocoapods.org/pods/AZCollectionViewController)## Features
* Automatic pagination handling
* No more awkward empty CollectionView screen
* AZ CollectionVIew controller give you advantage to connect your (Loading, no result, error ) views via Interface builder
* You can also add your custom xib as dummy views (loading, error, no result)## Installation
### CocoaPods
[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command:
```bash
$ gem install cocoapods
```To integrate AZ CollectionVIew controller into your Xcode project using CocoaPods, specify it in your `Podfile`:
```ruby
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!target '' do
pod 'AZCollectionViewController'
end
```Then, run the following command:
```bash
$ pod install
```## Usage
#### Step 1
* Extend your view controller from AZCollectionViewController
```swiftclass ViewController: AZCollectionViewController {
var lastIndex = 0
var results = [String]()override func viewDidLoad() {
nextLoadingCellNibName = "LoadingCollectionViewCell"
nextLoadingCellIdentifier = "LoadingCollectionViewCell"
loadNextPageLoaderCell(nibName: nextLoadingCellNibName, cellIdentifier: nextLoadingCellIdentifier) // Only if you want personal NextPage loading cell
super.viewDidLoad()
self.fetchData()}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}```
#### Step 2
* Same as AZTableVIewController
* Set the loading views outlet as given below
* Connect collectionView outlet as well![Alt text](http://i.imgur.com/SWYNa2W.png "AZTableView-step2")
![Alt text](http://i.imgur.com/Zi9RKJ2.png "AZTableView-step2")
* To load views from custom .xib files
```swift
class ViewController: AZCollectionViewController {
override func viewDidLoad() {self.loadLoadingView(nibName: "your nib name") // if bundle is nil
self.loadErrorView(nibName: "your nib name", bundle: yourBundle) // if custom bundlesuper.viewDidLoad()
self.fetchData()
}
}
```
* If your xibs are in main bundle than use
```swift
self.loadLoadingView(nibName: "your nib name") // if bundle is nil
```
Else use
```swift
self.loadLoadingView(nibName: "your nib name", bundle: yourBundle)
```#### Step 3
* And override AZCollectionView cellForRow function.
```swift
extension ViewController {override func AZCollectionView(_ collectionView: UICollectionView, cellForRowAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! TestCollectionViewCell
cell.feedImage.image = UIImage(named: self.results[indexPath.row])
return cell
}
override func AZCollectionView(_ collectionView: UICollectionView, heightForRowAt indexPath: IndexPath) -> CGSize {
return CGSize(width: (collectionView.frame.size.width / 3) - 6, height: (collectionView.frame.size.width / 3) - 4)
}
}```
#### Step 4* Override two more functions "fetchData" and "fetchNextData"
```swift
//MARK: - API Call
extension ViewController {
override func fetchData() {
super.fetchData()
FakeService.getData { (error, results) in
if let resu = results {
self.results.removeAll()
self.results.append(contentsOf: resu)
self.didfetchData(resultCount: resu.count, haveMoreData: true)
}
else if let error = error {
self.errorDidOccured(error: error)
}
}
}
override func fetchNextData() {
super.fetchNextData()
FakeService.getData (offset: results.count) { (error, results) in
if let resu = results {
self.results.append(contentsOf: resu)
if self.results.count < 45 { // you probably get next page exist from service.
self.didfetchData(resultCount: resu.count, haveMoreData: true)
}
else {
self.didfetchData(resultCount: resu.count, haveMoreData: false)
}
}
else if let error = error {
self.errorDidOccured(error: error)
}
}
}
}```
#### Done
Thats it, you successfully integrate AZCollectionViewController## License
AZCollectionViewController is available under the MIT license. See the LICENSE file for more info.
## Author
**Afroz Zaheer** - (https://github.com/AfrozZaheer)