Compare commits

..

3 Commits

Author SHA1 Message Date
Arnaud Dorgans a64002ef72 memory fixes 2018-08-06 18:08:29 +02:00
Arnaud Dorgans d3d5136f3d git fix 2018-04-03 14:45:23 +02:00
Arnaud Dorgans 8691a862bc Update README.md 2018-03-02 18:20:25 -04:00
7 changed files with 46 additions and 80 deletions
+1
View File
@@ -33,3 +33,4 @@ Carthage
# Pods/
/Example/InfiniteLayout.xcworkspace
/Example/Pods
/Example/InfiniteLayout.xcodeproj/project.xcworkspace/xcshareddata
@@ -226,7 +226,6 @@
607FACCD1AFB9204008FA782 /* Frameworks */,
607FACCE1AFB9204008FA782 /* Resources */,
36EEEA4F62F7A41DC7E00F9B /* [CP] Embed Pods Frameworks */,
BF7EA699B063C96A45D69BF2 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -245,8 +244,6 @@
607FACE11AFB9204008FA782 /* Sources */,
607FACE21AFB9204008FA782 /* Frameworks */,
607FACE31AFB9204008FA782 /* Resources */,
066936A649BBA50B7D22FE7E /* [CP] Embed Pods Frameworks */,
56B85F2D241E5ED6DDCED73C /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -321,21 +318,6 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
066936A649BBA50B7D22FE7E /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-InfiniteLayout_Tests/Pods-InfiniteLayout_Tests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
36EEEA4F62F7A41DC7E00F9B /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -364,21 +346,6 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-InfiniteLayout_Example/Pods-InfiniteLayout_Example-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
56B85F2D241E5ED6DDCED73C /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-InfiniteLayout_Tests/Pods-InfiniteLayout_Tests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
BB5E5FB53E7C451064DBC9A2 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -397,21 +364,6 @@
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";
showEnvVarsInLog = 0;
};
BF7EA699B063C96A45D69BF2 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-InfiniteLayout_Example/Pods-InfiniteLayout_Example-resources.sh\"\n";
showEnvVarsInLog = 0;
};
DF297DCD753BC67E73166377 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
+22 -13
View File
@@ -1,16 +1,17 @@
PODS:
- CocoaProxy (0.1.1)
- Differentiator (3.0.2)
- InfiniteLayout (0.1.6):
- CocoaProxy (~> 0.1)
- InfiniteLayout/Core (= 0.1.6)
- InfiniteLayout/Core (0.1.6):
- CocoaProxy (~> 0.1)
- InfiniteLayout/Rx (0.1.6):
- CocoaProxy (~> 0.1)
- RxCocoa (~> 4.0)
- RxDataSources (~> 3.0)
- RxSwift (~> 4.0)
- InfiniteLayout (0.2.3.1):
- CocoaProxy (~> 0)
- InfiniteLayout/Core (= 0.2.3.1)
- InfiniteLayout/Core (0.2.3.1):
- CocoaProxy (~> 0)
- InfiniteLayout/Rx (0.2.3.1):
- CocoaProxy (~> 0)
- InfiniteLayout/Core (~> 0)
- RxCocoa (~> 4)
- RxDataSources (~> 3)
- RxSwift (~> 4)
- RxCocoa (4.1.0):
- RxSwift (~> 4.0)
- RxDataSources (3.0.2):
@@ -23,18 +24,26 @@ DEPENDENCIES:
- InfiniteLayout (from `../`)
- InfiniteLayout/Rx (from `../`)
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- CocoaProxy
- Differentiator
- RxCocoa
- RxDataSources
- RxSwift
EXTERNAL SOURCES:
InfiniteLayout:
:path: ../
:path: "../"
SPEC CHECKSUMS:
CocoaProxy: 35ab81e24325b33834cffe45a3d1fd48ca67ef3a
Differentiator: a87be69eba49ec4ab460c7671143ee3a9eececfd
InfiniteLayout: 27a10e0a766122807a73740b5e7c7384fcdc37a2
InfiniteLayout: 17bbab705aa4d941fa82a7e9b658c96d13ce91a3
RxCocoa: cc1fec49cdc8fabe645964de7c51c099a36c2aa8
RxDataSources: cb7c31e652a87ebb919da45f716bbb87b3765f6b
RxSwift: 4219941c1244c88002901bd87a69d3aea9ae71f0
PODFILE CHECKSUM: 3501aeed91e62112dd38178a52f26b204b97c8c0
COCOAPODS: 1.4.0.rc.1
COCOAPODS: 1.5.3
+10 -10
View File
@@ -8,7 +8,7 @@
Pod::Spec.new do |s|
s.name = 'InfiniteLayout'
s.version = '0.2.3'
s.version = '0.2.3.2'
s.summary = 'Horizontal and Vertical infinite scrolling feature for UICollectionView with Paging, NSProxy delegate, Reactive extension'
# This description is used to generate tags and improve search results.
@@ -21,11 +21,11 @@ Pod::Spec.new do |s|
Horizontal and Vertical infinite scrolling feature for UICollectionView with Paging, NSProxy delegate, Reactive extension, SectionModel & AnimatableSectionModel support
DESC
s.homepage = 'https://github.com/Arnoymous/InfiniteLayout'
s.screenshots = 'https://github.com/Arnoymous/InfiniteLayout/raw/master/horizontal.gif', 'https://github.com/Arnoymous/InfiniteLayout/raw/master/vertical.gif', 'https://github.com/Arnoymous/InfiniteLayout/raw/master/custom.gif', 'https://github.com/Arnoymous/InfiniteLayout/raw/master/delegate.gif'
s.homepage = 'https://github.com/arnauddorgans/InfiniteLayout'
s.screenshots = 'https://github.com/arnauddorgans/InfiniteLayout/raw/master/horizontal.gif', 'https://github.com/arnauddorgans/InfiniteLayout/raw/master/vertical.gif', 'https://github.com/arnauddorgans/InfiniteLayout/raw/master/custom.gif', 'https://github.com/arnauddorgans/InfiniteLayout/raw/master/delegate.gif'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Arnoymous' => 'ineox@me.com' }
s.source = { :git => 'https://github.com/Arnoymous/InfiniteLayout.git', :tag => s.version.to_s }
s.author = { 'Arnaud Dorgans' => 'ineox@me.com' }
s.source = { :git => 'https://github.com/arnauddorgans/InfiniteLayout.git', :tag => s.version.to_s }
s.social_media_url = 'https://twitter.com/arnauddorgans'
s.ios.deployment_target = '8.0'
@@ -39,7 +39,7 @@ Horizontal and Vertical infinite scrolling feature for UICollectionView with Pag
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
s.dependency 'CocoaProxy', '~> 0.1'
s.dependency 'CocoaProxy', '~> 0'
s.default_subspec = 'Core'
@@ -48,10 +48,10 @@ Horizontal and Vertical infinite scrolling feature for UICollectionView with Pag
end
s.subspec 'Rx' do |rx|
rx.dependency 'InfiniteLayout/Core', '~> 0.2'
rx.dependency 'RxSwift', '~> 4.0'
rx.dependency 'RxCocoa', '~> 4.0'
rx.dependency 'RxDataSources', '~> 3.0'
rx.dependency 'InfiniteLayout/Core', '~> 0'
rx.dependency 'RxSwift', '~> 4'
rx.dependency 'RxCocoa', '~> 4'
rx.dependency 'RxDataSources', '~> 3'
rx.source_files = 'InfiniteLayout/Rx/**/*'
end
end
@@ -17,7 +17,7 @@ open class InfiniteCollectionView: UICollectionView {
lazy var dataSourceProxy = InfiniteCollectionViewDataSourceProxy(collectionView: self)
lazy var delegateProxy = InfiniteCollectionViewDelegateProxy(collectionView: self)
@IBOutlet open var infiniteDelegate: InfiniteCollectionViewDelegate?
@IBOutlet open weak var infiniteDelegate: InfiniteCollectionViewDelegate?
open private(set) var centeredIndexPath: IndexPath?
open var preferredCenteredIndexPath: IndexPath? = IndexPath(item: 0, section: 0)
@@ -25,7 +25,7 @@ open class InfiniteCollectionView: UICollectionView {
var forwardDelegate: Bool { return true }
var _contentSize: CGSize?
override open var delegate: UICollectionViewDelegate? {
override open weak var delegate: UICollectionViewDelegate? {
get { return super.delegate }
set {
guard forwardDelegate else {
@@ -45,7 +45,7 @@ open class InfiniteCollectionView: UICollectionView {
}
}
override open var dataSource: UICollectionViewDataSource? {
override open weak var dataSource: UICollectionViewDataSource? {
get { return super.dataSource }
set {
guard forwardDelegate else {
@@ -45,6 +45,10 @@ class InfiniteCollectionViewProxy<T: NSObjectProtocol>: CocoaProxy {
super.init(proxies: [])
self.collectionView = collectionView
}
deinit {
self.proxies.removeAll()
}
}
class InfiniteCollectionViewDelegateProxy: InfiniteCollectionViewProxy<UICollectionViewDelegate>, UICollectionViewDelegate {
+6 -6
View File
@@ -1,11 +1,11 @@
# InfiniteLayout
[![CI Status](http://img.shields.io/travis/Arnoymous/InfiniteLayout.svg?style=flat)](https://travis-ci.org/Arnoymous/InfiniteLayout)
[![CI Status](http://img.shields.io/travis/arnauddorgans/InfiniteLayout.svg?style=flat)](https://travis-ci.org/arnauddorgans/InfiniteLayout)
[![Version](https://img.shields.io/cocoapods/v/InfiniteLayout.svg?style=flat)](http://cocoapods.org/pods/InfiniteLayout)
[![License](https://img.shields.io/cocoapods/l/InfiniteLayout.svg?style=flat)](http://cocoapods.org/pods/InfiniteLayout)
[![Platform](https://img.shields.io/cocoapods/p/InfiniteLayout.svg?style=flat)](http://cocoapods.org/pods/InfiniteLayout)
<img src="https://github.com/Arnoymous/InfiniteLayout/raw/master/horizontal.gif" width="250" height="540"><img src="https://github.com/Arnoymous/InfiniteLayout/raw/master/vertical.gif" width="250" height="540"><img src="https://github.com/Arnoymous/InfiniteLayout/raw/master/custom.gif" width="250" height="540">
<img src="https://github.com/arnauddorgans/InfiniteLayout/raw/master/horizontal.gif" width="250" height="540"><img src="https://github.com/arnauddorgans/InfiniteLayout/raw/master/vertical.gif" width="250" height="540"><img src="https://github.com/arnauddorgans/InfiniteLayout/raw/master/custom.gif" width="250" height="540">
## Example
@@ -80,7 +80,7 @@ self.infiniteCollectionView.preferredCenteredIndexPath = nil // center the close
### Delegate
<img src="https://github.com/Arnoymous/InfiniteLayout/raw/master/delegate.gif" width="250" height="540">
<img src="https://github.com/arnauddorgans/InfiniteLayout/raw/master/delegate.gif" width="250" height="540">
InfiniteCollectionView provide an **infiniteDelegate** protocol used to get the centered IndexPath, usefull if you want to use an InfiniteCollectionView like a Picker.
@@ -151,20 +151,20 @@ RxInfiniteCollectionView provide Reactive extension for **itemCentered** & **mod
```swift
infiniteCollectionView.rx.itemCentered
.asDriver()
.drive(onNext: { indexPath in
.drive(onNext: { [unowned self] indexPath in
self.selectedView.update(index: indexPath.row) // update interface with indexPath
}).disposed(by: disposeBag)
infiniteCollectionView.rx.modelCentered(Int.self)
.asDriver()
.drive(onNext: { element in
.drive(onNext: { [unowned self] element in
self.selectedView.update(index: element) // update interface with model
}).disposed(by: disposeBag)
```
## Author
Arnoymous, arnaud.dorgans@gmail.com
Arnaud Dorgans, arnaud.dorgans@gmail.com
## License