├── AppStoreLikeExample ├── AppStoreLikeExample │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── newimages │ │ │ ├── 20.imageset │ │ │ │ ├── 20.png │ │ │ │ └── Contents.json │ │ │ ├── 21.imageset │ │ │ │ ├── 21.png │ │ │ │ └── Contents.json │ │ │ ├── 22.imageset │ │ │ │ ├── 22.png │ │ │ │ └── Contents.json │ │ │ ├── 23.imageset │ │ │ │ ├── 23.png │ │ │ │ └── Contents.json │ │ │ ├── 24.imageset │ │ │ │ ├── 24.png │ │ │ │ └── Contents.json │ │ │ ├── 25.imageset │ │ │ │ ├── 25.png │ │ │ │ └── Contents.json │ │ │ ├── 26.imageset │ │ │ │ ├── 26.png │ │ │ │ └── Contents.json │ │ │ ├── 27.imageset │ │ │ │ ├── 27.png │ │ │ │ └── Contents.json │ │ │ ├── 28.imageset │ │ │ │ ├── 28.png │ │ │ │ └── Contents.json │ │ │ ├── 29.imageset │ │ │ │ ├── 29.png │ │ │ │ └── Contents.json │ │ │ ├── 30.imageset │ │ │ │ ├── 30.png │ │ │ │ └── Contents.json │ │ │ ├── 31.imageset │ │ │ │ ├── 31.png │ │ │ │ └── Contents.json │ │ │ ├── 32.imageset │ │ │ │ ├── 32.png │ │ │ │ └── Contents.json │ │ │ ├── 33.imageset │ │ │ │ ├── 33.png │ │ │ │ └── Contents.json │ │ │ ├── 34.imageset │ │ │ │ ├── 34.png │ │ │ │ └── Contents.json │ │ │ ├── 35.imageset │ │ │ │ ├── 35.jpeg │ │ │ │ └── Contents.json │ │ │ └── 36.imageset │ │ │ │ ├── 36.png │ │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── newimages │ │ └── 35.jpeg │ ├── CollectionViewCellUper.swift │ ├── CollectionViewCellBottom.swift │ ├── CollectionViewCellmiddle.swift │ ├── TableViewCellbottom.swift │ ├── TableCellMiddle.swift │ ├── SimpleViewController.swift │ ├── Info.plist │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── AppDelegate.swift │ └── ViewController.swift ├── AppStoreLikeExample.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── piyushsinroja.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcuserdata │ │ └── piyushsinroja.xcuserdatad │ │ │ ├── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── AppStoreLikeExample.xcscheme │ │ │ └── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ └── project.pbxproj ├── AppStoreLikeExampleTests │ ├── Info.plist │ └── AppStoreLikeExampleTests.swift └── AppStoreLikeExampleUITests │ ├── Info.plist │ └── AppStoreLikeExampleUITests.swift ├── Simulator Screen Shot 03-Mar-2017, 6.21.27 PM.jpg ├── Simulator Screen Shot 03-Mar-2017, 6.21.37 PM.jpg └── README.md /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Simulator Screen Shot 03-Mar-2017, 6.21.27 PM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/Simulator Screen Shot 03-Mar-2017, 6.21.27 PM.jpg -------------------------------------------------------------------------------- /Simulator Screen Shot 03-Mar-2017, 6.21.37 PM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/Simulator Screen Shot 03-Mar-2017, 6.21.37 PM.jpg -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/newimages/35.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/newimages/35.jpeg -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/20.imageset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/20.imageset/20.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/21.imageset/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/21.imageset/21.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/22.imageset/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/22.imageset/22.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/23.imageset/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/23.imageset/23.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/24.imageset/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/24.imageset/24.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/25.imageset/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/25.imageset/25.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/26.imageset/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/26.imageset/26.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/27.imageset/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/27.imageset/27.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/28.imageset/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/28.imageset/28.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/29.imageset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/29.imageset/29.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/30.imageset/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/30.imageset/30.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/31.imageset/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/31.imageset/31.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/32.imageset/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/32.imageset/32.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/33.imageset/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/33.imageset/33.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/34.imageset/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/34.imageset/34.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/35.imageset/35.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/35.imageset/35.jpeg -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/36.imageset/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/36.imageset/36.png -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample.xcodeproj/project.xcworkspace/xcuserdata/piyushsinroja.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piyush-Sinroja/AppStoreLikeExampleSwift3/HEAD/AppStoreLikeExample/AppStoreLikeExample.xcodeproj/project.xcworkspace/xcuserdata/piyushsinroja.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/CollectionViewCellUper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewCellUper.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 30/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class CollectionViewCellUper: UICollectionViewCell { 12 | @IBOutlet weak var imageviewUper: UIImageView! 13 | } 14 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/CollectionViewCellBottom.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewCellBottom.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 26/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class CollectionViewCellBottom: UICollectionViewCell { 12 | @IBOutlet weak var imageviewBottom: UIImageView! 13 | } 14 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/20.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "20.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/21.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "21.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/22.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "22.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/23.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "23.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/24.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "24.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/25.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "25.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/26.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "26.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/27.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "27.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/28.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "28.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/29.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "29.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/30.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "30.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/31.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "31.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/32.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "32.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/33.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "33.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/34.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "34.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/35.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "35.jpeg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/newimages/36.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "36.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AppStoreLikeExampleSwift3 2 | Using CollectionView, UITableView, ScrollView, Such As AppStore 3 | 4 | ![alt tag](https://github.com/IosPower/AppStoreLikeExampleSwift3/blob/master/Simulator%20Screen%20Shot%2003-Mar-2017%2C%206.21.27%20PM.jpg) 5 | 6 | ![alt tag](https://github.com/IosPower/AppStoreLikeExampleSwift3/blob/master/Simulator%20Screen%20Shot%2003-Mar-2017%2C%206.21.37%20PM.jpg) 7 | 8 | AppStoreLikeExampleSwift3 is available under the MIT license. See the LICENSE file for more info. 9 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/CollectionViewCellmiddle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewCellmiddle.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 26/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class CollectionViewCellmiddle: UICollectionViewCell { 12 | @IBOutlet weak var imageview: UIImageView! 13 | @IBOutlet weak var lblMiddle: UILabel! 14 | @IBOutlet weak var constrImageHeight: NSLayoutConstraint! 15 | } 16 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/TableViewCellbottom.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TableViewCellbottom.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 26/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TableViewCellbottom: UITableViewCell { 12 | @IBOutlet weak var collectionviewBottom: UICollectionView! 13 | @IBOutlet weak var constrLabelHeight: NSLayoutConstraint! 14 | @IBOutlet weak var lblBottom: UILabel! 15 | 16 | override func awakeFromNib() { 17 | super.awakeFromNib() 18 | // Initialization code 19 | } 20 | override func setSelected(_ selected: Bool, animated: Bool) { 21 | super.setSelected(selected, animated: animated) 22 | 23 | // Configure the view for the selected state 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExampleTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.AppStoreLikeExample 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExampleUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.AppStoreLikeExample 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/TableCellMiddle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TableCellMiddle.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 26/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TableCellMiddle: UITableViewCell { 12 | var flowLayout: UICollectionViewFlowLayout { 13 | return collectionviewmiddle?.collectionViewLayout as! UICollectionViewFlowLayout 14 | } 15 | @IBOutlet weak var collectionviewmiddle: UICollectionView! 16 | @IBOutlet weak var lblMiddle: UILabel! 17 | override func awakeFromNib() { 18 | super.awakeFromNib() 19 | 20 | collectionviewmiddle.decelerationRate = UIScrollViewDecelerationRateNormal; 21 | } 22 | override func setSelected(_ selected: Bool, animated: Bool) { 23 | super.setSelected(selected, animated: animated) 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample.xcodeproj/xcuserdata/piyushsinroja.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AppStoreLikeExample.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1CE01A551CF5C45F0069858C 16 | 17 | primary 18 | 19 | 20 | 1CE01A691CF5C4600069858C 21 | 22 | primary 23 | 24 | 25 | 1CE01A741CF5C4600069858C 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample.xcodeproj/xcuserdata/piyushsinroja.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 14 | 15 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExampleTests/AppStoreLikeExampleTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppStoreLikeExampleTests.swift 3 | // AppStoreLikeExampleTests 4 | // 5 | // Created by piyush sinroja on 25/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import AppStoreLikeExample 11 | 12 | class AppStoreLikeExampleTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/SimpleViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleViewController.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 30/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class SimpleViewController: UIViewController, UIScrollViewDelegate { 12 | 13 | @IBOutlet weak var scrollmain: UIScrollView! 14 | @IBOutlet weak var constrViewUper: NSLayoutConstraint! 15 | @IBOutlet weak var viewUper: UIView! 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | 19 | // Do any additional setup after loading the view. 20 | scrollmain.delegate = self 21 | } 22 | 23 | override func didReceiveMemoryWarning() { 24 | super.didReceiveMemoryWarning() 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | func scrollViewDidScroll(_ scrollView: UIScrollView) { 29 | constrViewUper.constant = -(scrollView.contentOffset.y) 30 | // print(constrViewUper.constant) 31 | if scrollView.contentOffset.y<=0 { 32 | print(scrollView.contentOffset.y) 33 | constrViewUper.constant = 0 34 | } 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExampleUITests/AppStoreLikeExampleUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppStoreLikeExampleUITests.swift 3 | // AppStoreLikeExampleUITests 4 | // 5 | // Created by piyush sinroja on 25/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class AppStoreLikeExampleUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 25/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 16 | // Override point for customization after application launch. 17 | print("didFinishLaunchingWithOptions") 18 | return true 19 | } 20 | 21 | func applicationWillResignActive(_ application: UIApplication) { 22 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 23 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 24 | print("applicationWillResignActive") 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | print("applicationDidEnterBackground") 31 | } 32 | 33 | func applicationWillEnterForeground(_ application: UIApplication) { 34 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 35 | print("applicationWillEnterForeground") 36 | 37 | } 38 | 39 | func applicationDidBecomeActive(_ application: UIApplication) { 40 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 41 | print("applicationDidBecomeActive") 42 | } 43 | 44 | func applicationWillTerminate(_ application: UIApplication) { 45 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 46 | print("applicationWillTerminate") 47 | } 48 | 49 | 50 | } 51 | 52 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample.xcodeproj/xcuserdata/piyushsinroja.xcuserdatad/xcschemes/AppStoreLikeExample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // AppStoreLikeExample 4 | // 5 | // Created by piyush sinroja on 25/05/16. 6 | // Copyright © 2016 piyush sinroja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | // UICollectionView Outlet 14 | @IBOutlet weak var collectionviewUper: UICollectionView! 15 | 16 | // NSLayoutConstraint Outlet 17 | @IBOutlet weak var constrTableTop: NSLayoutConstraint! 18 | @IBOutlet weak var constrViewUperHeight: NSLayoutConstraint! 19 | @IBOutlet weak var constrViewUper: NSLayoutConstraint! 20 | @IBOutlet weak var tableviewHeight: NSLayoutConstraint! 21 | 22 | // UIScrollView Outlet 23 | @IBOutlet weak var scrollmain: UIScrollView! 24 | 25 | // UITableView Outlet 26 | @IBOutlet weak var tableviewmain: UITableView! 27 | 28 | // Cells Properties 29 | var tableCellobj: TableCellMiddle = TableCellMiddle() 30 | var tableCellbottomobj: TableViewCellbottom = TableViewCellbottom() 31 | 32 | var objCollectionViewCellMiddle : CollectionViewCellmiddle = CollectionViewCellmiddle() 33 | var objCollectionViewCellBottom : CollectionViewCellBottom = CollectionViewCellBottom() 34 | var objCollectionViewCellUper : CollectionViewCellUper = CollectionViewCellUper() 35 | 36 | // Other Var 37 | var arrayName: NSMutableArray = NSMutableArray() 38 | var arrayImages: NSArray = NSArray() 39 | var arrayImageDetail: NSArray = NSArray() 40 | var hightcount : CGFloat = CGFloat() 41 | var heightForMiddlecell : CGFloat! 42 | 43 | //MARK:- View LifeCycle 44 | override func viewDidLoad() { 45 | super.viewDidLoad() 46 | // Do any additional setup after loading the view, typically from a nib. 47 | 48 | scrollmain.delegate = self 49 | arrayImageDetail = ["20.png Nice Nature Price 1$","21.png Nice Nature Price 2$","22.png Nice Nature Price 3$","23.png Nice Nature Price 4$","24.png Nice Nature Price 5$","25.png Nice Nature Price 6$","26.png Nice Nature Price 7$","27.png Nice Nature Price 8$","28.png Nice Nature Price 9$","29.png Nice Nature Price 10$","30.png Nice Nature Price 11$","31.png Nice Nature Price 12$","32.png Nice Nature Price 13$","33.png Nice Nature Price 14$","34.png Nice Nature Price 15$","35.png Nice Nature Price 16$","36.png Nice Nature Price 1$"] 50 | 51 | arrayName.add("New Games We Love") 52 | arrayName.add("New Apps We Love") 53 | arrayName.add("Wild Rides") 54 | arrayName.add("") 55 | 56 | arrayName.add("Hot This Week") 57 | arrayName.add("₹ 60 for a Limited Time") 58 | arrayName.add("Apps & Games for ₹ 10") 59 | arrayName.add("10 Best Infinite Runners") 60 | 61 | arrayImages = ["20.png","21.png","22.png","23.png","24.png","25.png","26.png","27.png","28.png","29.png","30.png","31.png","32.png","33.png","34.png","35.png","36.png"] 62 | 63 | print(arrayName.count) 64 | tableviewmain.rowHeight = UITableViewAutomaticDimension 65 | tableviewmain.estimatedRowHeight = 110 66 | 67 | let heightOfYourTabBar: CGFloat = 64 68 | let insets: UIEdgeInsets = UIEdgeInsetsMake(0,0 , heightOfYourTabBar, 0) 69 | tableviewmain.contentInset = insets 70 | tableviewmain.scrollIndicatorInsets = insets 71 | 72 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 73 | constrViewUperHeight.constant = 120 74 | constrTableTop.constant = 184 // 120 + 64(NavigationBar) 75 | } 76 | else if ScreenCheck.isiPhone_6 77 | { 78 | constrViewUperHeight.constant = 150 79 | constrTableTop.constant = 214 // 150 + 64(NavigationBar) 80 | } 81 | else{ 82 | constrViewUperHeight.constant = 170 83 | constrTableTop.constant = 234 // 170 + 64(NavigationBar) 84 | } 85 | Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true) 86 | } 87 | 88 | 89 | func update() { 90 | UIDevice.current.isBatteryMonitoringEnabled = true 91 | let battary : Float = batteryLevel() 92 | let percetage : Int = Int(battary)*100 93 | // print(battary*100) 94 | if battary*100 == 81 { 95 | print(percetage) 96 | } 97 | } 98 | 99 | func batteryLevel() -> Float { 100 | return UIDevice.current.batteryLevel 101 | } 102 | 103 | override func didReceiveMemoryWarning() { 104 | super.didReceiveMemoryWarning() 105 | // Dispose of any resources that can be recreated. 106 | } 107 | 108 | //MARK:- ScrollView Support Method 109 | func scrollforHotcell(_ scrollView: UIScrollView) { 110 | var value2 : Int = Int() 111 | var valueremain : CGFloat = CGFloat() 112 | let offset: CGFloat = scrollView.contentOffset.x 113 | var offset1: CGFloat = CGFloat() 114 | var cellwidthandspace: CGFloat = CGFloat() 115 | 116 | print(offset) 117 | 118 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 119 | cellwidthandspace = 100 120 | valueremain = 320 121 | value2 = Int ((scrollView.contentOffset.x + 45)/cellwidthandspace) 122 | offset1 = scrollView.contentSize.width-350 // 380 = 320 + 30 123 | } 124 | 125 | else if ScreenCheck.isiPhone_6{ 126 | cellwidthandspace = 110 127 | valueremain = 375 128 | value2 = Int ((scrollView.contentOffset.x + 50)/cellwidthandspace) 129 | offset1 = scrollView.contentSize.width-400 // 380 = 375 + 25 130 | } 131 | 132 | else{ 133 | cellwidthandspace = 120 134 | valueremain = 414 135 | value2 = Int ((scrollView.contentOffset.x + 55)/cellwidthandspace) 136 | offset1 = scrollView.contentSize.width-430 // 380 = 414 + 16 137 | } 138 | 139 | if offset>offset1{ 140 | scrollView.setContentOffset(CGPoint(x: scrollView.contentSize.width-valueremain, y: scrollView.contentOffset.y), animated: true) 141 | } 142 | else{ 143 | scrollView.setContentOffset(CGPoint(x: cellwidthandspace * CGFloat (value2), y: scrollView.contentOffset.y), animated: true) 144 | } 145 | } 146 | 147 | func heightForView(_ text:String, font:UIFont, width:CGFloat) -> CGFloat{ 148 | let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude)) 149 | label.numberOfLines = 0 150 | label.lineBreakMode = NSLineBreakMode.byWordWrapping 151 | // label.font = font 152 | label.text = text 153 | label.sizeToFit() 154 | return label.frame.height 155 | } 156 | 157 | //MARK:- RoundedCorner Method 158 | func roundedCornerForView(_ sourceView: UIView,cournerNumber: CGFloat, cornorRadius: CGFloat ) { 159 | var maskPath: UIBezierPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: ([.bottomLeft, .bottomRight]), cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 160 | switch cournerNumber { 161 | case 1: 162 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: .topLeft, cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 163 | case 2: 164 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: .topRight, cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 165 | case 3: 166 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: .bottomLeft , cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 167 | case 4: 168 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: .bottomRight, cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 169 | case 5: 170 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: ([.topLeft, .topRight]), cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 171 | case 6: 172 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: ([.bottomLeft, .bottomRight]), cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 173 | case 7: 174 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: ([.topLeft, .bottomRight]), cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 175 | case 8: 176 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: ([.bottomLeft, .topRight]), cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 177 | case 9: 178 | maskPath = UIBezierPath(roundedRect: sourceView.bounds, byRoundingCorners: ([.topLeft, .topRight,.bottomLeft,.bottomRight]), cornerRadii: CGSize(width: cornorRadius, height: cornorRadius)) 179 | default: 180 | break 181 | } 182 | let maskLayer: CAShapeLayer = CAShapeLayer() 183 | maskLayer.frame = sourceView.bounds 184 | maskLayer.path = maskPath.cgPath 185 | sourceView.layer.mask = maskLayer 186 | } 187 | } 188 | //MARK:- UITableViewDataSource Methods 189 | extension ViewController: UITableViewDataSource { 190 | 191 | //MARK:- Tableview Methods 192 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 193 | return arrayName.count 194 | } 195 | 196 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 197 | 198 | // var cellnew : UITableViewCell? = (tableView.dequeueReusableCellWithIdentifier("cell")) 199 | // if cellnew == nil{ 200 | // cellnew = UITableViewCell(style: .Default, reuseIdentifier: "cell") 201 | // } 202 | // 203 | // cellnew?.textLabel?.text = "\(indexPath.row+1)" 204 | // return cellnew! 205 | 206 | let strname = arrayName[indexPath.row] 207 | if (strname as AnyObject).isEqual(to: "New Apps We Love") || (strname as AnyObject).isEqual(to: "New Games We Love") || (strname as AnyObject).isEqual(to: "Hot This Week") || (strname as AnyObject).isEqual(to: "Apps & Games for ₹ 10"){ 208 | tableCellobj = tableView.dequeueReusableCell(withIdentifier: "cellmiddle", for: indexPath) as! TableCellMiddle 209 | 210 | tableviewHeight.constant = tableviewmain.contentSize.height + 64 211 | tableCellobj.lblMiddle.text = "\(strname)" 212 | return tableCellobj 213 | } 214 | else if (strname as AnyObject).isEqual(to: ""){ 215 | tableCellbottomobj = tableView.dequeueReusableCell(withIdentifier: "cellbottom", for: indexPath) as! TableViewCellbottom 216 | 217 | tableCellbottomobj.constrLabelHeight.constant = 0 218 | 219 | tableviewHeight.constant = tableviewmain.contentSize.height + 64 220 | tableCellbottomobj.lblBottom.text = "\(strname)" 221 | return tableCellbottomobj 222 | } 223 | 224 | else{ 225 | tableCellbottomobj = tableView.dequeueReusableCell(withIdentifier: "cellbottom", for: indexPath) as! TableViewCellbottom 226 | tableviewHeight.constant = tableviewmain.contentSize.height + 64 227 | tableCellbottomobj.constrLabelHeight.constant = 30 228 | tableCellbottomobj.lblBottom.text = "\(strname)" 229 | return tableCellbottomobj 230 | } 231 | } 232 | 233 | } 234 | 235 | //MARK:- UITableViewDelegate Methods 236 | extension ViewController: UITableViewDelegate 237 | { 238 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 239 | // return UITableViewAutomaticDimension 240 | 241 | // var total : CGFloat = CGFloat() 242 | // for i in tableviewmain.visibleCells 243 | // { 244 | // total = total + i.frame.size.height 245 | // print(i.frame.size.height) 246 | // print(total) 247 | // tableviewHeight.constant = total 248 | // 249 | // } 250 | 251 | let strname = arrayName[indexPath.row] 252 | if (strname as AnyObject).isEqual(to: "New Apps We Love") || (strname as AnyObject).isEqual(to: "New Games We Love") || (strname as AnyObject).isEqual(to: "Hot This Week") || (strname as AnyObject).isEqual(to: "Apps & Games for ₹ 10"){ 253 | let font1 = UIFont(name: "Helvetica", size: 20.0) 254 | let strcheck = arrayImageDetail[indexPath.row] as? String 255 | heightForMiddlecell = heightForView(strcheck!, font: font1!, width: 100) 256 | 257 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 258 | return heightForMiddlecell + 80 + 40 259 | } 260 | else if ScreenCheck.isiPhone_6{ 261 | return heightForMiddlecell + 100 + 40 262 | } 263 | else{ 264 | return heightForMiddlecell + 110 + 40 265 | } 266 | } 267 | 268 | else if (strname as AnyObject).isEqual(to: ""){ 269 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 270 | return 120 271 | } 272 | else if ScreenCheck.isiPhone_6{ 273 | return 130 274 | } 275 | else{ 276 | return 140 277 | } 278 | } 279 | else{ 280 | 281 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 282 | return 140 283 | } 284 | else if ScreenCheck.isiPhone_6{ 285 | return 150 286 | } 287 | else{ 288 | return 160 289 | } 290 | } 291 | } 292 | 293 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 294 | tableView.deselectRow(at: indexPath, animated: true) 295 | } 296 | } 297 | 298 | //MARK:- UICollectionViewDataSource Methods 299 | extension ViewController: UICollectionViewDataSource { 300 | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{ 301 | return arrayImages.count 302 | } 303 | 304 | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ 305 | if collectionView.tag == 2 { 306 | objCollectionViewCellMiddle = collectionView.dequeueReusableCell(withReuseIdentifier: "collectioncellmiddle", for: indexPath) as! CollectionViewCellmiddle 307 | 308 | // self.roundedCornerForView(objCollectionViewCellMiddle.imageview, cournerNumber: 9, cornorRadius: 15) 309 | objCollectionViewCellMiddle.imageview.image = UIImage(named: arrayImages[indexPath.item] as! String) 310 | objCollectionViewCellMiddle.imageview.layer.masksToBounds = true 311 | objCollectionViewCellMiddle.imageview.clipsToBounds = true 312 | objCollectionViewCellMiddle.imageview.layer.cornerRadius = 15.0 313 | objCollectionViewCellMiddle.imageview.layer.borderColor = UIColor.red.cgColor 314 | objCollectionViewCellMiddle.imageview.layer.borderWidth = 1.0 315 | 316 | objCollectionViewCellMiddle.lblMiddle.text = arrayImageDetail[indexPath.row] as? String 317 | 318 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 319 | objCollectionViewCellMiddle.constrImageHeight.constant = 80 320 | } 321 | else if ScreenCheck.isiPhone_6{ 322 | objCollectionViewCellMiddle.constrImageHeight.constant = 90 323 | } 324 | else{ 325 | objCollectionViewCellMiddle.constrImageHeight.constant = 100 326 | } 327 | // objCollectionViewCellMiddle.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize) 328 | return objCollectionViewCellMiddle 329 | 330 | } 331 | 332 | else if collectionView.tag == 4 { 333 | objCollectionViewCellUper = collectionView.dequeueReusableCell(withReuseIdentifier: "collectioncelluper", for: indexPath) as! CollectionViewCellUper 334 | 335 | objCollectionViewCellUper.imageviewUper.image = UIImage(named: arrayImages[indexPath.item] as! String) 336 | return objCollectionViewCellUper 337 | } 338 | else { 339 | objCollectionViewCellBottom = collectionView.dequeueReusableCell(withReuseIdentifier: "collectioncellBottom", for: indexPath) as! CollectionViewCellBottom 340 | objCollectionViewCellBottom.imageviewBottom.image = UIImage(named: arrayImages[indexPath.item] as! String) 341 | 342 | objCollectionViewCellBottom.imageviewBottom.layer.cornerRadius = 10 343 | objCollectionViewCellBottom.imageviewBottom.layer.masksToBounds = true 344 | 345 | return objCollectionViewCellBottom 346 | } 347 | } 348 | } 349 | 350 | //MARK:- UICollectionViewDelegateFlowLayout Method 351 | extension ViewController: UICollectionViewDelegateFlowLayout { 352 | 353 | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize{ 354 | 355 | // objCollectionViewCellMiddle.setNeedsUpdateConstraints() 356 | // objCollectionViewCellMiddle.updateConstraintsIfNeeded() 357 | // objCollectionViewCellMiddle.setNeedsLayout() 358 | // objCollectionViewCellMiddle.layoutIfNeeded() 359 | 360 | if collectionView.tag == 2 { 361 | let font1 = UIFont(name: "Helvetica", size: 20.0) 362 | let strcheck = arrayImageDetail[indexPath.row] as? String 363 | heightForMiddlecell = heightForView(strcheck!, font: font1!, width: 100) 364 | print(heightForMiddlecell) 365 | 366 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 367 | return CGSize(width: 90, height: heightForMiddlecell+80) 368 | } 369 | else if ScreenCheck.isiPhone_6{ 370 | return CGSize(width: 100, height: heightForMiddlecell+90) 371 | } 372 | else{ 373 | return CGSize(width: 110, height: heightForMiddlecell+100) 374 | } 375 | } 376 | 377 | else if collectionView.tag == 4{ 378 | return CGSize(width: UIScreen.main.bounds.size.width, height: constrViewUperHeight.constant-1) 379 | } 380 | 381 | else { 382 | if ScreenCheck.isiPhone_4 || ScreenCheck.isiPhone_5 { 383 | return CGSize(width: 180, height: 90) 384 | } 385 | else if ScreenCheck.isiPhone_6{ 386 | return CGSize(width: 200, height: 90) 387 | } 388 | else{ 389 | return CGSize(width: 220, height: 100) 390 | } 391 | } 392 | } 393 | } 394 | 395 | //MARK:- ScrollView Methods 396 | extension ViewController: UIScrollViewDelegate 397 | { 398 | func scrollViewDidScroll(_ scrollView: UIScrollView) { 399 | if scrollView.tag == 0 { 400 | constrViewUper.constant = -(scrollView.contentOffset.y) 401 | if scrollView.contentOffset.y<=0 { 402 | constrViewUper.constant = 0 403 | } 404 | } 405 | } 406 | 407 | func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 408 | print("scrollViewWillBeginDragging") 409 | } 410 | 411 | func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { 412 | 413 | print("scrollViewDidEndDragging") 414 | 415 | if scrollView.tag == 2 { 416 | 417 | print(scrollView.contentOffset.x) 418 | print(scrollView.contentSize.width - scrollView.frame.size.width) 419 | 420 | if (scrollView.contentOffset.x < 0) || (scrollView.contentOffset.x > (scrollView.contentSize.width - scrollView.frame.size.width)){ 421 | print("bouncing left Or Right") 422 | } 423 | else{ 424 | scrollforHotcell(scrollView) 425 | } 426 | } 427 | } 428 | 429 | func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 430 | 431 | print("scrollViewDidEndDecelerating") 432 | 433 | if scrollView.tag == 2 { 434 | if (scrollView.contentOffset.x < 0) || (scrollView.contentOffset.x > (scrollView.contentSize.width - scrollView.frame.size.width)){ 435 | print("bouncing left Or Right") 436 | } 437 | else{ 438 | scrollforHotcell(scrollView) 439 | } 440 | } 441 | } 442 | 443 | 444 | func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { 445 | print("scrollViewWillBeginDecelerating") 446 | } 447 | 448 | func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { 449 | print("scrollViewWillEndDragging") 450 | } 451 | 452 | } 453 | 454 | struct ScreenCheck{ 455 | static var kScreenBounds : CGRect = UIScreen.main.bounds 456 | static var isiPhone_4 : Bool = 480 == UIScreen.main.bounds.size.height ? true:false 457 | static var isiPhone_5 : Bool = 568 == UIScreen.main.bounds.size.height ? true:false 458 | static var isiPhone_6 : Bool = 667 == UIScreen.main.bounds.size.height ? true:false 459 | static var isiPhone_6_Plus : Bool = 736 == UIScreen.main.bounds.size.height ? true:false 460 | } 461 | 462 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1C95E5FC1CFC125700069B2E /* CollectionViewCellUper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C95E5FB1CFC125700069B2E /* CollectionViewCellUper.swift */; }; 11 | 1CD2DBDC1CF6D17500515CAA /* TableCellMiddle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD2DBDB1CF6D17500515CAA /* TableCellMiddle.swift */; }; 12 | 1CD2DBDE1CF6D1F200515CAA /* CollectionViewCellmiddle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD2DBDD1CF6D1F200515CAA /* CollectionViewCellmiddle.swift */; }; 13 | 1CD2DBE21CF6D42900515CAA /* TableViewCellbottom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD2DBE11CF6D42900515CAA /* TableViewCellbottom.swift */; }; 14 | 1CD2DBE41CF6D5D800515CAA /* CollectionViewCellBottom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD2DBE31CF6D5D800515CAA /* CollectionViewCellBottom.swift */; }; 15 | 1CE01A5A1CF5C45F0069858C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CE01A591CF5C45F0069858C /* AppDelegate.swift */; }; 16 | 1CE01A5C1CF5C45F0069858C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CE01A5B1CF5C45F0069858C /* ViewController.swift */; }; 17 | 1CE01A5F1CF5C45F0069858C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1CE01A5D1CF5C45F0069858C /* Main.storyboard */; }; 18 | 1CE01A611CF5C4600069858C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1CE01A601CF5C4600069858C /* Assets.xcassets */; }; 19 | 1CE01A641CF5C4600069858C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1CE01A621CF5C4600069858C /* LaunchScreen.storyboard */; }; 20 | 1CE01A6F1CF5C4600069858C /* AppStoreLikeExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CE01A6E1CF5C4600069858C /* AppStoreLikeExampleTests.swift */; }; 21 | 1CE01A7A1CF5C4600069858C /* AppStoreLikeExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CE01A791CF5C4600069858C /* AppStoreLikeExampleUITests.swift */; }; 22 | 1CF3B4AE1CFC089D005AE0B6 /* SimpleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF3B4AD1CFC089D005AE0B6 /* SimpleViewController.swift */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXContainerItemProxy section */ 26 | 1CE01A6B1CF5C4600069858C /* PBXContainerItemProxy */ = { 27 | isa = PBXContainerItemProxy; 28 | containerPortal = 1CE01A4E1CF5C45F0069858C /* Project object */; 29 | proxyType = 1; 30 | remoteGlobalIDString = 1CE01A551CF5C45F0069858C; 31 | remoteInfo = AppStoreLikeExample; 32 | }; 33 | 1CE01A761CF5C4600069858C /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = 1CE01A4E1CF5C45F0069858C /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = 1CE01A551CF5C45F0069858C; 38 | remoteInfo = AppStoreLikeExample; 39 | }; 40 | /* End PBXContainerItemProxy section */ 41 | 42 | /* Begin PBXFileReference section */ 43 | 1C95E5FB1CFC125700069B2E /* CollectionViewCellUper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCellUper.swift; sourceTree = ""; }; 44 | 1CD2DBDB1CF6D17500515CAA /* TableCellMiddle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableCellMiddle.swift; sourceTree = ""; }; 45 | 1CD2DBDD1CF6D1F200515CAA /* CollectionViewCellmiddle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCellmiddle.swift; sourceTree = ""; }; 46 | 1CD2DBE11CF6D42900515CAA /* TableViewCellbottom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewCellbottom.swift; sourceTree = ""; }; 47 | 1CD2DBE31CF6D5D800515CAA /* CollectionViewCellBottom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCellBottom.swift; sourceTree = ""; }; 48 | 1CE01A561CF5C45F0069858C /* AppStoreLikeExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AppStoreLikeExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | 1CE01A591CF5C45F0069858C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 50 | 1CE01A5B1CF5C45F0069858C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 51 | 1CE01A5E1CF5C45F0069858C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 52 | 1CE01A601CF5C4600069858C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 53 | 1CE01A631CF5C4600069858C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 54 | 1CE01A651CF5C4600069858C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 55 | 1CE01A6A1CF5C4600069858C /* AppStoreLikeExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AppStoreLikeExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 56 | 1CE01A6E1CF5C4600069858C /* AppStoreLikeExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppStoreLikeExampleTests.swift; sourceTree = ""; }; 57 | 1CE01A701CF5C4600069858C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58 | 1CE01A751CF5C4600069858C /* AppStoreLikeExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AppStoreLikeExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | 1CE01A791CF5C4600069858C /* AppStoreLikeExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppStoreLikeExampleUITests.swift; sourceTree = ""; }; 60 | 1CE01A7B1CF5C4600069858C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 61 | 1CF3B4AD1CFC089D005AE0B6 /* SimpleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleViewController.swift; sourceTree = ""; }; 62 | /* End PBXFileReference section */ 63 | 64 | /* Begin PBXFrameworksBuildPhase section */ 65 | 1CE01A531CF5C45F0069858C /* Frameworks */ = { 66 | isa = PBXFrameworksBuildPhase; 67 | buildActionMask = 2147483647; 68 | files = ( 69 | ); 70 | runOnlyForDeploymentPostprocessing = 0; 71 | }; 72 | 1CE01A671CF5C4600069858C /* Frameworks */ = { 73 | isa = PBXFrameworksBuildPhase; 74 | buildActionMask = 2147483647; 75 | files = ( 76 | ); 77 | runOnlyForDeploymentPostprocessing = 0; 78 | }; 79 | 1CE01A721CF5C4600069858C /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | ); 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | /* End PBXFrameworksBuildPhase section */ 87 | 88 | /* Begin PBXGroup section */ 89 | 1CE01A4D1CF5C45E0069858C = { 90 | isa = PBXGroup; 91 | children = ( 92 | 1CE01A581CF5C45F0069858C /* AppStoreLikeExample */, 93 | 1CE01A6D1CF5C4600069858C /* AppStoreLikeExampleTests */, 94 | 1CE01A781CF5C4600069858C /* AppStoreLikeExampleUITests */, 95 | 1CE01A571CF5C45F0069858C /* Products */, 96 | ); 97 | sourceTree = ""; 98 | }; 99 | 1CE01A571CF5C45F0069858C /* Products */ = { 100 | isa = PBXGroup; 101 | children = ( 102 | 1CE01A561CF5C45F0069858C /* AppStoreLikeExample.app */, 103 | 1CE01A6A1CF5C4600069858C /* AppStoreLikeExampleTests.xctest */, 104 | 1CE01A751CF5C4600069858C /* AppStoreLikeExampleUITests.xctest */, 105 | ); 106 | name = Products; 107 | sourceTree = ""; 108 | }; 109 | 1CE01A581CF5C45F0069858C /* AppStoreLikeExample */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | 1C95E5FB1CFC125700069B2E /* CollectionViewCellUper.swift */, 113 | 1CD2DBE31CF6D5D800515CAA /* CollectionViewCellBottom.swift */, 114 | 1CD2DBE11CF6D42900515CAA /* TableViewCellbottom.swift */, 115 | 1CD2DBDB1CF6D17500515CAA /* TableCellMiddle.swift */, 116 | 1CD2DBDD1CF6D1F200515CAA /* CollectionViewCellmiddle.swift */, 117 | 1CE01A591CF5C45F0069858C /* AppDelegate.swift */, 118 | 1CE01A5B1CF5C45F0069858C /* ViewController.swift */, 119 | 1CF3B4AD1CFC089D005AE0B6 /* SimpleViewController.swift */, 120 | 1CE01A5D1CF5C45F0069858C /* Main.storyboard */, 121 | 1CE01A601CF5C4600069858C /* Assets.xcassets */, 122 | 1CE01A621CF5C4600069858C /* LaunchScreen.storyboard */, 123 | 1CE01A651CF5C4600069858C /* Info.plist */, 124 | ); 125 | path = AppStoreLikeExample; 126 | sourceTree = ""; 127 | }; 128 | 1CE01A6D1CF5C4600069858C /* AppStoreLikeExampleTests */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | 1CE01A6E1CF5C4600069858C /* AppStoreLikeExampleTests.swift */, 132 | 1CE01A701CF5C4600069858C /* Info.plist */, 133 | ); 134 | path = AppStoreLikeExampleTests; 135 | sourceTree = ""; 136 | }; 137 | 1CE01A781CF5C4600069858C /* AppStoreLikeExampleUITests */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 1CE01A791CF5C4600069858C /* AppStoreLikeExampleUITests.swift */, 141 | 1CE01A7B1CF5C4600069858C /* Info.plist */, 142 | ); 143 | path = AppStoreLikeExampleUITests; 144 | sourceTree = ""; 145 | }; 146 | /* End PBXGroup section */ 147 | 148 | /* Begin PBXNativeTarget section */ 149 | 1CE01A551CF5C45F0069858C /* AppStoreLikeExample */ = { 150 | isa = PBXNativeTarget; 151 | buildConfigurationList = 1CE01A7E1CF5C4600069858C /* Build configuration list for PBXNativeTarget "AppStoreLikeExample" */; 152 | buildPhases = ( 153 | 1CE01A521CF5C45F0069858C /* Sources */, 154 | 1CE01A531CF5C45F0069858C /* Frameworks */, 155 | 1CE01A541CF5C45F0069858C /* Resources */, 156 | ); 157 | buildRules = ( 158 | ); 159 | dependencies = ( 160 | ); 161 | name = AppStoreLikeExample; 162 | productName = AppStoreLikeExample; 163 | productReference = 1CE01A561CF5C45F0069858C /* AppStoreLikeExample.app */; 164 | productType = "com.apple.product-type.application"; 165 | }; 166 | 1CE01A691CF5C4600069858C /* AppStoreLikeExampleTests */ = { 167 | isa = PBXNativeTarget; 168 | buildConfigurationList = 1CE01A811CF5C4600069858C /* Build configuration list for PBXNativeTarget "AppStoreLikeExampleTests" */; 169 | buildPhases = ( 170 | 1CE01A661CF5C4600069858C /* Sources */, 171 | 1CE01A671CF5C4600069858C /* Frameworks */, 172 | 1CE01A681CF5C4600069858C /* Resources */, 173 | ); 174 | buildRules = ( 175 | ); 176 | dependencies = ( 177 | 1CE01A6C1CF5C4600069858C /* PBXTargetDependency */, 178 | ); 179 | name = AppStoreLikeExampleTests; 180 | productName = AppStoreLikeExampleTests; 181 | productReference = 1CE01A6A1CF5C4600069858C /* AppStoreLikeExampleTests.xctest */; 182 | productType = "com.apple.product-type.bundle.unit-test"; 183 | }; 184 | 1CE01A741CF5C4600069858C /* AppStoreLikeExampleUITests */ = { 185 | isa = PBXNativeTarget; 186 | buildConfigurationList = 1CE01A841CF5C4600069858C /* Build configuration list for PBXNativeTarget "AppStoreLikeExampleUITests" */; 187 | buildPhases = ( 188 | 1CE01A711CF5C4600069858C /* Sources */, 189 | 1CE01A721CF5C4600069858C /* Frameworks */, 190 | 1CE01A731CF5C4600069858C /* Resources */, 191 | ); 192 | buildRules = ( 193 | ); 194 | dependencies = ( 195 | 1CE01A771CF5C4600069858C /* PBXTargetDependency */, 196 | ); 197 | name = AppStoreLikeExampleUITests; 198 | productName = AppStoreLikeExampleUITests; 199 | productReference = 1CE01A751CF5C4600069858C /* AppStoreLikeExampleUITests.xctest */; 200 | productType = "com.apple.product-type.bundle.ui-testing"; 201 | }; 202 | /* End PBXNativeTarget section */ 203 | 204 | /* Begin PBXProject section */ 205 | 1CE01A4E1CF5C45F0069858C /* Project object */ = { 206 | isa = PBXProject; 207 | attributes = { 208 | LastSwiftUpdateCheck = 0730; 209 | LastUpgradeCheck = 0730; 210 | ORGANIZATIONNAME = "piyush sinroja"; 211 | TargetAttributes = { 212 | 1CE01A551CF5C45F0069858C = { 213 | CreatedOnToolsVersion = 7.3; 214 | LastSwiftMigration = 0820; 215 | }; 216 | 1CE01A691CF5C4600069858C = { 217 | CreatedOnToolsVersion = 7.3; 218 | LastSwiftMigration = 0820; 219 | TestTargetID = 1CE01A551CF5C45F0069858C; 220 | }; 221 | 1CE01A741CF5C4600069858C = { 222 | CreatedOnToolsVersion = 7.3; 223 | LastSwiftMigration = 0820; 224 | TestTargetID = 1CE01A551CF5C45F0069858C; 225 | }; 226 | }; 227 | }; 228 | buildConfigurationList = 1CE01A511CF5C45F0069858C /* Build configuration list for PBXProject "AppStoreLikeExample" */; 229 | compatibilityVersion = "Xcode 3.2"; 230 | developmentRegion = English; 231 | hasScannedForEncodings = 0; 232 | knownRegions = ( 233 | en, 234 | Base, 235 | ); 236 | mainGroup = 1CE01A4D1CF5C45E0069858C; 237 | productRefGroup = 1CE01A571CF5C45F0069858C /* Products */; 238 | projectDirPath = ""; 239 | projectRoot = ""; 240 | targets = ( 241 | 1CE01A551CF5C45F0069858C /* AppStoreLikeExample */, 242 | 1CE01A691CF5C4600069858C /* AppStoreLikeExampleTests */, 243 | 1CE01A741CF5C4600069858C /* AppStoreLikeExampleUITests */, 244 | ); 245 | }; 246 | /* End PBXProject section */ 247 | 248 | /* Begin PBXResourcesBuildPhase section */ 249 | 1CE01A541CF5C45F0069858C /* Resources */ = { 250 | isa = PBXResourcesBuildPhase; 251 | buildActionMask = 2147483647; 252 | files = ( 253 | 1CE01A641CF5C4600069858C /* LaunchScreen.storyboard in Resources */, 254 | 1CE01A611CF5C4600069858C /* Assets.xcassets in Resources */, 255 | 1CE01A5F1CF5C45F0069858C /* Main.storyboard in Resources */, 256 | ); 257 | runOnlyForDeploymentPostprocessing = 0; 258 | }; 259 | 1CE01A681CF5C4600069858C /* Resources */ = { 260 | isa = PBXResourcesBuildPhase; 261 | buildActionMask = 2147483647; 262 | files = ( 263 | ); 264 | runOnlyForDeploymentPostprocessing = 0; 265 | }; 266 | 1CE01A731CF5C4600069858C /* Resources */ = { 267 | isa = PBXResourcesBuildPhase; 268 | buildActionMask = 2147483647; 269 | files = ( 270 | ); 271 | runOnlyForDeploymentPostprocessing = 0; 272 | }; 273 | /* End PBXResourcesBuildPhase section */ 274 | 275 | /* Begin PBXSourcesBuildPhase section */ 276 | 1CE01A521CF5C45F0069858C /* Sources */ = { 277 | isa = PBXSourcesBuildPhase; 278 | buildActionMask = 2147483647; 279 | files = ( 280 | 1CE01A5C1CF5C45F0069858C /* ViewController.swift in Sources */, 281 | 1CD2DBE41CF6D5D800515CAA /* CollectionViewCellBottom.swift in Sources */, 282 | 1C95E5FC1CFC125700069B2E /* CollectionViewCellUper.swift in Sources */, 283 | 1CD2DBDC1CF6D17500515CAA /* TableCellMiddle.swift in Sources */, 284 | 1CE01A5A1CF5C45F0069858C /* AppDelegate.swift in Sources */, 285 | 1CD2DBE21CF6D42900515CAA /* TableViewCellbottom.swift in Sources */, 286 | 1CF3B4AE1CFC089D005AE0B6 /* SimpleViewController.swift in Sources */, 287 | 1CD2DBDE1CF6D1F200515CAA /* CollectionViewCellmiddle.swift in Sources */, 288 | ); 289 | runOnlyForDeploymentPostprocessing = 0; 290 | }; 291 | 1CE01A661CF5C4600069858C /* Sources */ = { 292 | isa = PBXSourcesBuildPhase; 293 | buildActionMask = 2147483647; 294 | files = ( 295 | 1CE01A6F1CF5C4600069858C /* AppStoreLikeExampleTests.swift in Sources */, 296 | ); 297 | runOnlyForDeploymentPostprocessing = 0; 298 | }; 299 | 1CE01A711CF5C4600069858C /* Sources */ = { 300 | isa = PBXSourcesBuildPhase; 301 | buildActionMask = 2147483647; 302 | files = ( 303 | 1CE01A7A1CF5C4600069858C /* AppStoreLikeExampleUITests.swift in Sources */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | /* End PBXSourcesBuildPhase section */ 308 | 309 | /* Begin PBXTargetDependency section */ 310 | 1CE01A6C1CF5C4600069858C /* PBXTargetDependency */ = { 311 | isa = PBXTargetDependency; 312 | target = 1CE01A551CF5C45F0069858C /* AppStoreLikeExample */; 313 | targetProxy = 1CE01A6B1CF5C4600069858C /* PBXContainerItemProxy */; 314 | }; 315 | 1CE01A771CF5C4600069858C /* PBXTargetDependency */ = { 316 | isa = PBXTargetDependency; 317 | target = 1CE01A551CF5C45F0069858C /* AppStoreLikeExample */; 318 | targetProxy = 1CE01A761CF5C4600069858C /* PBXContainerItemProxy */; 319 | }; 320 | /* End PBXTargetDependency section */ 321 | 322 | /* Begin PBXVariantGroup section */ 323 | 1CE01A5D1CF5C45F0069858C /* Main.storyboard */ = { 324 | isa = PBXVariantGroup; 325 | children = ( 326 | 1CE01A5E1CF5C45F0069858C /* Base */, 327 | ); 328 | name = Main.storyboard; 329 | sourceTree = ""; 330 | }; 331 | 1CE01A621CF5C4600069858C /* LaunchScreen.storyboard */ = { 332 | isa = PBXVariantGroup; 333 | children = ( 334 | 1CE01A631CF5C4600069858C /* Base */, 335 | ); 336 | name = LaunchScreen.storyboard; 337 | sourceTree = ""; 338 | }; 339 | /* End PBXVariantGroup section */ 340 | 341 | /* Begin XCBuildConfiguration section */ 342 | 1CE01A7C1CF5C4600069858C /* Debug */ = { 343 | isa = XCBuildConfiguration; 344 | buildSettings = { 345 | ALWAYS_SEARCH_USER_PATHS = NO; 346 | CLANG_ANALYZER_NONNULL = YES; 347 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 348 | CLANG_CXX_LIBRARY = "libc++"; 349 | CLANG_ENABLE_MODULES = YES; 350 | CLANG_ENABLE_OBJC_ARC = YES; 351 | CLANG_WARN_BOOL_CONVERSION = YES; 352 | CLANG_WARN_CONSTANT_CONVERSION = YES; 353 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 354 | CLANG_WARN_EMPTY_BODY = YES; 355 | CLANG_WARN_ENUM_CONVERSION = YES; 356 | CLANG_WARN_INT_CONVERSION = YES; 357 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 358 | CLANG_WARN_UNREACHABLE_CODE = YES; 359 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 360 | CODE_SIGN_IDENTITY = "iPhone Developer: Parita Sharma (79DHBYVYG2)"; 361 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Parita Sharma (79DHBYVYG2)"; 362 | COPY_PHASE_STRIP = NO; 363 | DEBUG_INFORMATION_FORMAT = dwarf; 364 | ENABLE_STRICT_OBJC_MSGSEND = YES; 365 | ENABLE_TESTABILITY = YES; 366 | GCC_C_LANGUAGE_STANDARD = gnu99; 367 | GCC_DYNAMIC_NO_PIC = NO; 368 | GCC_NO_COMMON_BLOCKS = YES; 369 | GCC_OPTIMIZATION_LEVEL = 0; 370 | GCC_PREPROCESSOR_DEFINITIONS = ( 371 | "DEBUG=1", 372 | "$(inherited)", 373 | ); 374 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 375 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 376 | GCC_WARN_UNDECLARED_SELECTOR = YES; 377 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 378 | GCC_WARN_UNUSED_FUNCTION = YES; 379 | GCC_WARN_UNUSED_VARIABLE = YES; 380 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 381 | MTL_ENABLE_DEBUG_INFO = YES; 382 | ONLY_ACTIVE_ARCH = YES; 383 | PROVISIONING_PROFILE = "8baa2599-592c-4c18-b50c-abdabda694a0"; 384 | SDKROOT = iphoneos; 385 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 386 | TARGETED_DEVICE_FAMILY = "1,2"; 387 | }; 388 | name = Debug; 389 | }; 390 | 1CE01A7D1CF5C4600069858C /* Release */ = { 391 | isa = XCBuildConfiguration; 392 | buildSettings = { 393 | ALWAYS_SEARCH_USER_PATHS = NO; 394 | CLANG_ANALYZER_NONNULL = YES; 395 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 396 | CLANG_CXX_LIBRARY = "libc++"; 397 | CLANG_ENABLE_MODULES = YES; 398 | CLANG_ENABLE_OBJC_ARC = YES; 399 | CLANG_WARN_BOOL_CONVERSION = YES; 400 | CLANG_WARN_CONSTANT_CONVERSION = YES; 401 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 402 | CLANG_WARN_EMPTY_BODY = YES; 403 | CLANG_WARN_ENUM_CONVERSION = YES; 404 | CLANG_WARN_INT_CONVERSION = YES; 405 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 406 | CLANG_WARN_UNREACHABLE_CODE = YES; 407 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 408 | CODE_SIGN_IDENTITY = "iPhone Developer: Parita Sharma (79DHBYVYG2)"; 409 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Parita Sharma (79DHBYVYG2)"; 410 | COPY_PHASE_STRIP = NO; 411 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 412 | ENABLE_NS_ASSERTIONS = NO; 413 | ENABLE_STRICT_OBJC_MSGSEND = YES; 414 | GCC_C_LANGUAGE_STANDARD = gnu99; 415 | GCC_NO_COMMON_BLOCKS = YES; 416 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 417 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 418 | GCC_WARN_UNDECLARED_SELECTOR = YES; 419 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 420 | GCC_WARN_UNUSED_FUNCTION = YES; 421 | GCC_WARN_UNUSED_VARIABLE = YES; 422 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 423 | MTL_ENABLE_DEBUG_INFO = NO; 424 | PROVISIONING_PROFILE = "8baa2599-592c-4c18-b50c-abdabda694a0"; 425 | SDKROOT = iphoneos; 426 | TARGETED_DEVICE_FAMILY = "1,2"; 427 | VALIDATE_PRODUCT = YES; 428 | }; 429 | name = Release; 430 | }; 431 | 1CE01A7F1CF5C4600069858C /* Debug */ = { 432 | isa = XCBuildConfiguration; 433 | buildSettings = { 434 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 435 | CODE_SIGN_IDENTITY = "iPhone Developer: Parita Sharma (79DHBYVYG2)"; 436 | INFOPLIST_FILE = AppStoreLikeExample/Info.plist; 437 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 438 | PRODUCT_BUNDLE_IDENTIFIER = com.AppStoreLikeExample; 439 | PRODUCT_NAME = "$(TARGET_NAME)"; 440 | PROVISIONING_PROFILE = "8baa2599-592c-4c18-b50c-abdabda694a0"; 441 | SWIFT_VERSION = 3.0; 442 | }; 443 | name = Debug; 444 | }; 445 | 1CE01A801CF5C4600069858C /* Release */ = { 446 | isa = XCBuildConfiguration; 447 | buildSettings = { 448 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 449 | CODE_SIGN_IDENTITY = "iPhone Developer: Parita Sharma (79DHBYVYG2)"; 450 | INFOPLIST_FILE = AppStoreLikeExample/Info.plist; 451 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 452 | PRODUCT_BUNDLE_IDENTIFIER = com.AppStoreLikeExample; 453 | PRODUCT_NAME = "$(TARGET_NAME)"; 454 | PROVISIONING_PROFILE = "8baa2599-592c-4c18-b50c-abdabda694a0"; 455 | SWIFT_VERSION = 3.0; 456 | }; 457 | name = Release; 458 | }; 459 | 1CE01A821CF5C4600069858C /* Debug */ = { 460 | isa = XCBuildConfiguration; 461 | buildSettings = { 462 | BUNDLE_LOADER = "$(TEST_HOST)"; 463 | INFOPLIST_FILE = AppStoreLikeExampleTests/Info.plist; 464 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 465 | PRODUCT_BUNDLE_IDENTIFIER = com.AppStoreLikeExample; 466 | PRODUCT_NAME = "$(TARGET_NAME)"; 467 | SWIFT_VERSION = 3.0; 468 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AppStoreLikeExample.app/AppStoreLikeExample"; 469 | }; 470 | name = Debug; 471 | }; 472 | 1CE01A831CF5C4600069858C /* Release */ = { 473 | isa = XCBuildConfiguration; 474 | buildSettings = { 475 | BUNDLE_LOADER = "$(TEST_HOST)"; 476 | INFOPLIST_FILE = AppStoreLikeExampleTests/Info.plist; 477 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 478 | PRODUCT_BUNDLE_IDENTIFIER = com.AppStoreLikeExample; 479 | PRODUCT_NAME = "$(TARGET_NAME)"; 480 | SWIFT_VERSION = 3.0; 481 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AppStoreLikeExample.app/AppStoreLikeExample"; 482 | }; 483 | name = Release; 484 | }; 485 | 1CE01A851CF5C4600069858C /* Debug */ = { 486 | isa = XCBuildConfiguration; 487 | buildSettings = { 488 | INFOPLIST_FILE = AppStoreLikeExampleUITests/Info.plist; 489 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 490 | PRODUCT_BUNDLE_IDENTIFIER = com.AppStoreLikeExample; 491 | PRODUCT_NAME = "$(TARGET_NAME)"; 492 | SWIFT_VERSION = 3.0; 493 | TEST_TARGET_NAME = AppStoreLikeExample; 494 | }; 495 | name = Debug; 496 | }; 497 | 1CE01A861CF5C4600069858C /* Release */ = { 498 | isa = XCBuildConfiguration; 499 | buildSettings = { 500 | INFOPLIST_FILE = AppStoreLikeExampleUITests/Info.plist; 501 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 502 | PRODUCT_BUNDLE_IDENTIFIER = com.AppStoreLikeExample; 503 | PRODUCT_NAME = "$(TARGET_NAME)"; 504 | SWIFT_VERSION = 3.0; 505 | TEST_TARGET_NAME = AppStoreLikeExample; 506 | }; 507 | name = Release; 508 | }; 509 | /* End XCBuildConfiguration section */ 510 | 511 | /* Begin XCConfigurationList section */ 512 | 1CE01A511CF5C45F0069858C /* Build configuration list for PBXProject "AppStoreLikeExample" */ = { 513 | isa = XCConfigurationList; 514 | buildConfigurations = ( 515 | 1CE01A7C1CF5C4600069858C /* Debug */, 516 | 1CE01A7D1CF5C4600069858C /* Release */, 517 | ); 518 | defaultConfigurationIsVisible = 0; 519 | defaultConfigurationName = Release; 520 | }; 521 | 1CE01A7E1CF5C4600069858C /* Build configuration list for PBXNativeTarget "AppStoreLikeExample" */ = { 522 | isa = XCConfigurationList; 523 | buildConfigurations = ( 524 | 1CE01A7F1CF5C4600069858C /* Debug */, 525 | 1CE01A801CF5C4600069858C /* Release */, 526 | ); 527 | defaultConfigurationIsVisible = 0; 528 | defaultConfigurationName = Release; 529 | }; 530 | 1CE01A811CF5C4600069858C /* Build configuration list for PBXNativeTarget "AppStoreLikeExampleTests" */ = { 531 | isa = XCConfigurationList; 532 | buildConfigurations = ( 533 | 1CE01A821CF5C4600069858C /* Debug */, 534 | 1CE01A831CF5C4600069858C /* Release */, 535 | ); 536 | defaultConfigurationIsVisible = 0; 537 | defaultConfigurationName = Release; 538 | }; 539 | 1CE01A841CF5C4600069858C /* Build configuration list for PBXNativeTarget "AppStoreLikeExampleUITests" */ = { 540 | isa = XCConfigurationList; 541 | buildConfigurations = ( 542 | 1CE01A851CF5C4600069858C /* Debug */, 543 | 1CE01A861CF5C4600069858C /* Release */, 544 | ); 545 | defaultConfigurationIsVisible = 0; 546 | defaultConfigurationName = Release; 547 | }; 548 | /* End XCConfigurationList section */ 549 | }; 550 | rootObject = 1CE01A4E1CF5C45F0069858C /* Project object */; 551 | } 552 | -------------------------------------------------------------------------------- /AppStoreLikeExample/AppStoreLikeExample/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 362 | 366 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | --------------------------------------------------------------------------------