26 Commits
Author SHA1 Message Date
RamotionandGitHub 2dfb71030b Update README.md 2020-04-06 10:01:14 +03:00
igor.k 9a2114f92a add SPM config 2019-11-12 17:40:15 +03:00
RamotionandGitHub e47424c229 Update README.md 2019-10-12 21:12:44 +03:00
Alex K 246f322c52 bump version 2019-04-03 15:27:28 +03:00
Alex K f2e034d0dd converted to swift 5 2019-04-03 15:20:53 +03:00
RamotionandGitHub 7b0d186110 Update README.md 2018-12-29 17:00:05 +03:00
Juri VasylenkoandGitHub 7bd7769390 Merge pull request #10 from Jauzee/patch-1
Update README.md
2018-12-10 12:40:00 +03:00
Abdurahim JauzeeandGitHub 33dcea07c4 Update README.md
Update Swift compatibility badges
2018-12-10 11:29:37 +02:00
RamotionandGitHub ffd4059dad Update README.md 2018-12-10 12:11:05 +03:00
Alex K 35a3e02076 swift 4.2 2018-09-27 09:16:58 +03:00
RamotionandGitHub c2474bd0a7 Update README.md 2018-06-29 14:21:58 +03:00
RamotionandGitHub a1f734e194 Update README.md 2018-06-26 11:18:33 +03:00
RamotionandGitHub 3e2e45aeaf Update README.md 2018-05-29 12:09:29 +03:00
RamotionandGitHub 65df28699e Update README.md 2018-05-29 12:08:38 +03:00
RamotionandGitHub b44a421ad5 Update README.md 2018-04-26 09:41:36 +03:00
RamotionandGitHub b8ea1fddf8 Add files via upload 2018-04-25 23:39:52 -07:00
RamotionandGitHub d673082150 Delete preview.gif 2018-04-26 09:38:28 +03:00
RamotionandGitHub 9743436247 Update README.md 2018-04-24 09:19:09 +03:00
RamotionandGitHub 01eac2d610 Update README.md 2018-03-12 10:59:22 +03:00
Alex MikhnevandGitHub aa39e2013a Update README.md 2018-02-21 14:57:18 +03:00
i.kolpachkov 83fb4c9c7d warnings fixed 2018-01-15 15:20:30 +03:00
Abdurahim Jauzee 27a75d53fe Add .swift-version file 2017-11-29 17:10:44 +03:00
Abdurahim Jauzee b938de2b80 Update README.md 2017-11-18 06:00:10 +03:00
Abdurahim Jauzee 3e7cbe94d8 Swift 4 update 2017-11-18 05:59:16 +03:00
Juri VasylenkoandGitHub 8637b83bab Update README.md 2017-07-27 15:04:57 +03:00
Travis CI 779aa76364 reorganize readme 2017-07-27 14:39:04 +03:00
15 changed files with 200 additions and 117 deletions
+1
View File
@@ -0,0 +1 @@
4.2
+1 -1
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'GlidingCollection'
s.version = '1.0.3'
s.version = '2.1.0'
s.summary = 'GlidingCollection'
s.license = 'MIT'
s.homepage = 'https://github.com/Ramotion/gliding-collection'
+26 -7
View File
@@ -358,25 +358,26 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0820;
LastUpgradeCheck = 0820;
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = "Ramotion Inc";
TargetAttributes = {
9D56EE9E1E6B2D5E008C3698 = {
CreatedOnToolsVersion = 8.2.1;
DevelopmentTeam = 2VFCBFYPFW;
LastSwiftMigration = 0820;
LastSwiftMigration = 1020;
ProvisioningStyle = Automatic;
};
9D56EEAD1E6B2D82008C3698 = {
CreatedOnToolsVersion = 8.2.1;
DevelopmentTeam = 2VFCBFYPFW;
LastSwiftMigration = 1020;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 9D56EE991E6B2D5E008C3698 /* Build configuration list for PBXProject "GlidingCollection" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
@@ -499,20 +500,29 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -552,20 +562,29 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -612,7 +631,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
@@ -633,7 +652,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.glidingCollection;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 5.0;
};
name = Release;
};
@@ -648,7 +667,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.glidingCollectionDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
@@ -664,7 +683,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.glidingCollectionDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0830"
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -10,7 +10,7 @@ import Foundation
// :nodoc:
extension Collection {
subscript(safe index: Index) -> Generator.Element? {
subscript(safe index: Index) -> Iterator.Element? {
return index >= startIndex && index < endIndex ? self[index] : nil
}
}
+12 -12
View File
@@ -164,7 +164,7 @@ fileprivate extension GlidingCollection {
collectionView.collectionViewLayout.invalidateLayout()
}
fileprivate func setupVerticalStack() {
func setupVerticalStack() {
guard
let source = dataSource,
source.numberOfItems(in: self) > 0 else {
@@ -205,7 +205,7 @@ fileprivate extension GlidingCollection {
addGestureRecognizer(gesture)
}
fileprivate func setShadow(to view: UIView) {
func setShadow(to view: UIView) {
view.clipsToBounds = false
let layer = view.layer
layer.shadowOffset = config.cardShadowOffset
@@ -342,7 +342,7 @@ extension GlidingCollection {
collectionView.collectionViewLayout.invalidateLayout()
if collectionView.numberOfItems(inSection: 0) > 0 {
let path = IndexPath(item: 0, section: 0)
collectionView.scrollToItem(at: path, at: UICollectionViewScrollPosition.centeredHorizontally, animated: false)
collectionView.scrollToItem(at: path, at: UICollectionView.ScrollPosition.centeredHorizontally, animated: false)
}
collectionView.reloadData()
collectionView.layoutIfNeeded()
@@ -424,27 +424,27 @@ extension GlidingCollection {
}, completion: nil)
if up, let movingButton = unified[safe: index], abs(oldIndex - index) <= 1 {
UIView.animate(withDuration: duration, delay: duration/3, options: UIViewAnimationOptions.curveEaseInOut, animations: {
UIView.animate(withDuration: duration, delay: duration/3, options: UIView.AnimationOptions.curveEaseInOut, animations: {
if up {
let insets = self.config.sideInsets
movingButton.frame = CGRect(x: insets.left, y: self.collectionView.frame.minY - 40, width: bounds.width - insets.left - insets.right, height: 30)
}
}, completion: nil)
UIView.animate(withDuration: duration, delay: duration/2, options: UIViewAnimationOptions.curveEaseInOut, animations: {
UIView.animate(withDuration: duration, delay: duration/2, options: UIView.AnimationOptions.curveEaseInOut, animations: {
self.animateTopButtons()
}, completion: nil)
} else {
UIView.animate(withDuration: duration, delay: duration/4, options: UIViewAnimationOptions.curveEaseInOut, animations: {
UIView.animate(withDuration: duration, delay: duration/4, options: UIView.AnimationOptions.curveEaseInOut, animations: {
up ? self.animateTopButtons() : self.animateBottomButtons()
}, completion: nil)
}
// MARK: Animate buttons textColor
for button in unified {
UIView.transition(with: button, duration: duration/2, options: UIViewAnimationOptions.transitionCrossDissolve, animations: {
UIView.transition(with: button, duration: duration/2, options: UIView.AnimationOptions.transitionCrossDissolve, animations: {
let color = button === movingItem ? self.config.activeButtonColor : self.config.inactiveButtonsColor
button.setTitleColor(color, for: UIControlState.normal)
button.setTitleColor(color, for: UIControl.State.normal)
}, completion: nil)
}
@@ -511,7 +511,7 @@ extension GlidingCollection {
// MARK: Private
@objc fileprivate func didTapped(_ button: UIButton) {
let unifiedButtons = topViews + bottomViews
guard let index = unifiedButtons.index(of: button) else { return }
guard let index = unifiedButtons.firstIndex(of: button) else { return }
delegate?.glidingCollection(self, didSelectItemAt: index)
expand(at: index)
}
@@ -631,8 +631,8 @@ extension GlidingCollection: CAAnimationDelegate {
}
animation.isRemovedOnCompletion = false
animation.fillMode = kCAFillModeBackwards
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
animation.fillMode = CAMediaTimingFillMode.backwards
animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
animation.duration = duration ?? config.animationDuration
animation.delegate = self
animation.beginTime = CACurrentMediaTime() + delay
@@ -663,7 +663,7 @@ extension GlidingCollection: CAAnimationDelegate {
collectionView.isUserInteractionEnabled = true
case .newCell where index == expandedItemIndex && aniview.animation.beginTime == anim.beginTime:
let paths = collectionView.indexPathsForVisibleItems.sorted { $0.0.item < $0.1.item }
let paths = collectionView.indexPathsForVisibleItems.sorted { $0.item < $1.item }
guard let path = paths.first, let cell = collectionView.cellForItem(at: path) else {
break
}
+1 -1
View File
@@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
setupGlidingCollection()
return true
}
@@ -1,113 +1,119 @@
{
"images": [
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename": "icon-40.png",
"filename" : "icon-40.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename": "icon-60.png",
"filename" : "icon-60.png",
"scale" : "3x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-58.png",
"scale": "2x"
"size" : "29x29",
"idiom" : "iphone",
"filename" : "icon-58.png",
"scale" : "2x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-87.png",
"scale": "3x"
"size" : "29x29",
"idiom" : "iphone",
"filename" : "icon-87.png",
"scale" : "3x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-80.png",
"scale": "2x"
"size" : "40x40",
"idiom" : "iphone",
"filename" : "icon-80.png",
"scale" : "2x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-120.png",
"scale": "3x"
"size" : "40x40",
"idiom" : "iphone",
"filename" : "icon-120.png",
"scale" : "3x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-120.png",
"scale": "2x"
"size" : "60x60",
"idiom" : "iphone",
"filename" : "icon-120.png",
"scale" : "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-180.png",
"scale": "3x"
"size" : "60x60",
"idiom" : "iphone",
"filename" : "icon-180.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename": "icon-20.png",
"filename" : "icon-20.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename": "icon-40.png",
"filename" : "icon-40.png",
"scale" : "2x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "icon-29.png",
"scale": "1x"
"size" : "29x29",
"idiom" : "ipad",
"filename" : "icon-29.png",
"scale" : "1x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "icon-58.png",
"scale": "2x"
"size" : "29x29",
"idiom" : "ipad",
"filename" : "icon-58.png",
"scale" : "2x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "icon-40.png",
"scale": "1x"
"size" : "40x40",
"idiom" : "ipad",
"filename" : "icon-40.png",
"scale" : "1x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "icon-80.png",
"scale": "2x"
"size" : "40x40",
"idiom" : "ipad",
"filename" : "icon-80.png",
"scale" : "2x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76.png",
"scale": "1x"
"size" : "76x76",
"idiom" : "ipad",
"filename" : "icon-76.png",
"scale" : "1x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-152.png",
"scale": "2x"
"size" : "76x76",
"idiom" : "ipad",
"filename" : "icon-152.png",
"scale" : "2x"
},
{
"idiom": "ipad",
"size": "83.5x83.5",
"filename": "icon-167.png",
"scale": "2x"
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "icon-167.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Ramotion.png",
"scale" : "1x"
}
],
"info": {
"version": 1,
"author": "xcode"
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties": {
"pre-rendered": true
"properties" : {
"pre-rendered" : true
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

+43
View File
@@ -0,0 +1,43 @@
// swift-tools-version:5.1
//
// Package.swift
//
// Copyright (c) Ramotion (https://www.ramotion.com/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
import PackageDescription
let package = Package(
name: "GlidingCollection",
platforms: [
.iOS(.v8)
],
products: [
.library(name: "GlidingCollection",
targets: ["GlidingCollection"]),
],
targets: [
.target(name: "GlidingCollection",
path: "GlidingCollection")
],
swiftLanguageVersions: [.v5]
)
+45 -31
View File
@@ -1,36 +1,43 @@
[![header](/assets/header.png)](https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=gliding-collection-logo)
<a href="https://www.ramotion.com/agency/app-development/?utm_source=gthb&utm_medium=repo&utm_campaign=gliding-collection"><img src="https://github.com/Ramotion/folding-cell/blob/master/header.png"></a>
<a href="https://github.com/Ramotion/gliding-collection">
<img align="left" src="https://github.com/Ramotion/gliding-collection/blob/master/assets/gliding-collection.gif" width="480" height="360" /></a>
<p><h1 align="left">GLIDING COLLECTION</h1></p>
<h4>A smooth, flowing, customizable decision for a UICollectionView Swift Controller</h4>
___
<p><h6>We specialize in the designing and coding of custom UI for Mobile Apps and Websites.</h6>
<a href="https://www.ramotion.com/agency/app-development/?utm_source=gthb&utm_medium=repo&utm_campaign=gliding-collection">
<img src="https://github.com/ramotion/gliding-collection/raw/master/contact_our_team@2x.png" width="187" height="34"></a>
</p>
<p><h6>Stay tuned for the latest updates:</h6>
<a href="https://goo.gl/rPFpid" >
<img src="https://i.imgur.com/ziSqeSo.png/" width="156" height="28"></a></p>
</br>
[![Twitter](https://img.shields.io/badge/Twitter-@Ramotion-blue.svg?style=flat)](http://twitter.com/Ramotion)
[![PodPlatform](https://img.shields.io/cocoapods/p/GlidingCollection.svg)](https://cocoapods.org/pods/GlidingCollection)
[![PodVersion](https://img.shields.io/cocoapods/v/GlidingCollection.svg)](http://cocoapods.org/pods/GlidingCollection)
[![Documentation](https://cdn.rawgit.com/Ramotion/gliding-collection/master/docs/badge.svg)](https://cdn.rawgit.com/Ramotion/gliding-collection/master/docs/index.html)
[![Carthage](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Ramotion/gliding-collection)
[![Codebeat](https://codebeat.co/badges/6a009992-5bf2-4730-aa35-f3b20ce7693d)](https://codebeat.co/projects/github-com-ramotion-gliding-collection)
![Swift](https://img.shields.io/badge/Swift-3.1-2ecc71.svg)
<br>
## About
This project is maintained by Ramotion, Inc.<br>
We specialize in the designing and coding of custom UI for Mobile Apps and Websites.<br><br>**Looking for developers for your project?**
<a href="https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=gliding-collection-contact-us/#Get_in_Touch" > <img src="https://github.com/Ramotion/navigation-stack/raw/master/contact_our_team@2x.png" width="150" height="30"></a>
[![animation](/assets/preview.gif)](https://dribbble.com/shots/3413329-iOS-Gliding-Collection-Open-Source)
The [iPhone mockup](https://store.ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=gliding-collection) available [here](https://store.ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=gliding-collection).
<br>
## Try this UI control in action
<a href="https://itunes.apple.com/app/apple-store/id1182360240?pt=550053&ct=gliding-collection&mt=8" > <img src="https://github.com/Ramotion/navigation-stack/raw/master/Download_on_the_App_Store_Badge_US-UK_135x40.png" width="170" height="58"></a>
![Swift](https://img.shields.io/badge/Swift-4.2-2ecc71.svg)
[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/Ramotion)
## Requirements
- iOS 8.0+
- Xcode 8
- Swift 3
- Swift 3 (<= 1.0.3)
- Swift 4 (>= 1.1.0)
- Swift 4.2 (~> 2.0)
<br>
@@ -69,7 +76,7 @@ class ViewController: UIViewController {
• Drag a `UIView` onto the canvas. Change it's class to `GlidingCollection` and use autolayout constraints.
![step-2](/assets/step-2.png)
![step-2](./assets/step-2.png)
• Connect this view to your view controller class as an `@IBOutlet`.
@@ -134,23 +141,30 @@ There is a [`GlidingCollectionDelegate`](/GlidingCollection/Protocols/GlidingCol
If you want to achieve a parallax effect on a horizontal cards stack, you need to place your `parallax view` in a cell's `contentView` and set its `tag` to `99`.
![parallax-view](/assets/parallax-view.png)
![parallax-view](./assets/parallax-view.png)
There is a `kGlidingCollectionParallaxViewTag` constant if you want to layout a cell in code.
```swift
imageView.tag = kGlidingCollectionParallaxViewTag
```
<br>
## 📄 License
## License
GlidingCollection is released under the MIT license.
Gliding Collection is released under the MIT license.
See [LICENSE](./LICENSE) for details.
This library is a part of a <a href="https://github.com/Ramotion/swift-ui-animation-components-and-libraries"><b>selection of our best UI open-source projects.</b></a>
If you use the open-source library in your project, please make sure to credit and backlink to https://www.ramotion.com/
## 📱 Get the Showroom App for iOS to give it a try
Try this UI component and more like this in our iOS app. Contact us if interested.
<a href="https://itunes.apple.com/app/apple-store/id1182360240?pt=550053&ct=gliding-collection&mt=8" >
<img src="https://github.com/ramotion/gliding-collection/raw/master/app_store@2x.png" width="117" height="34"></a>
<a href="https://www.ramotion.com/agency/app-development/?utm_source=gthb&utm_medium=repo&utm_campaign=gliding-collection">
<img src="https://github.com/ramotion/gliding-collection/raw/master/contact_our_team@2x.png" width="187" height="34"></a>
<br>
<br>
## Follow us
[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=https://github.com/ramotion/gliding-collection)
[![Twitter Follow](https://img.shields.io/twitter/follow/ramotion.svg?style=social)](https://twitter.com/ramotion)
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB