mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 11:47:40 +00:00
Implement Side menu and settings view. Need to work on logging out user
This commit is contained in:
parent
09263f8613
commit
6333a09711
3
Podfile
3
Podfile
@ -20,6 +20,9 @@ target 'Vendoo' do
|
||||
pod 'FBSDKShareKit'
|
||||
pod 'Firebase/Storage'
|
||||
pod 'TYMActivityIndicatorView'
|
||||
pod 'BSImagePicker', '~> 2.3'
|
||||
pod 'SWRevealViewController'
|
||||
|
||||
|
||||
|
||||
target 'VendooTests' do
|
||||
|
||||
14
Podfile.lock
14
Podfile.lock
@ -33,6 +33,10 @@ PODS:
|
||||
- Bolts/AppLinks (1.7.0):
|
||||
- Bolts/Tasks
|
||||
- Bolts/Tasks (1.7.0)
|
||||
- BSGridCollectionViewLayout (1.1.1)
|
||||
- BSImagePicker (2.3.0):
|
||||
- BSGridCollectionViewLayout (~> 1.1)
|
||||
- UIImageViewModeScaleAspect (~> 1.3)
|
||||
- FBSDKCoreKit (4.12.0):
|
||||
- Bolts (~> 1.7)
|
||||
- FBSDKLoginKit (4.12.0):
|
||||
@ -90,11 +94,14 @@ PODS:
|
||||
- PicoKit/Soap
|
||||
- PicoKit/XMLWriter (0.7.2)
|
||||
- SwiftyJSON (2.3.2)
|
||||
- SWRevealViewController (2.3.0)
|
||||
- TYMActivityIndicatorView (0.3.3)
|
||||
- UIImageViewModeScaleAspect (1.3)
|
||||
|
||||
DEPENDENCIES:
|
||||
- AeroGearOAuth2
|
||||
- Alamofire-SwiftyJSON
|
||||
- BSImagePicker (~> 2.3)
|
||||
- FBSDKCoreKit
|
||||
- FBSDKLoginKit
|
||||
- FBSDKShareKit
|
||||
@ -105,6 +112,7 @@ DEPENDENCIES:
|
||||
- Locksmith
|
||||
- OAuthSwift (~> 0.5.0)
|
||||
- PicoKit
|
||||
- SWRevealViewController
|
||||
- TYMActivityIndicatorView
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
@ -114,6 +122,8 @@ SPEC CHECKSUMS:
|
||||
Alamofire: c19a627cefd6a95f840401c49ab1f124e07f54ee
|
||||
Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98
|
||||
Bolts: a0058fa3b331c5a1e4402d534f2dae36dbff31e4
|
||||
BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3
|
||||
BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18
|
||||
FBSDKCoreKit: 6e56d5a2a64a755ad4efb5dbeee8f82fb1b99775
|
||||
FBSDKLoginKit: 03f68a8d48c2c8bb81d7eb8097973d483543e1f6
|
||||
FBSDKShareKit: df1491f064cffc8ebcc3fc8b71be94cc190c728e
|
||||
@ -132,8 +142,10 @@ SPEC CHECKSUMS:
|
||||
OAuthSwift: 1ef042d4362e755e24a78f158d817245641a5d24
|
||||
PicoKit: 9079bce659a8d5408c8af1c45254b971df614de3
|
||||
SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a
|
||||
SWRevealViewController: 6d3fd97f70112fd7cef9de14df4260eacce4c63a
|
||||
TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b
|
||||
UIImageViewModeScaleAspect: ec78901acfc20d3782154111a21d34390f8f71ad
|
||||
|
||||
PODFILE CHECKSUM: 4b7ee6fd372620e6f0ce654e3c9ceec07ad55669
|
||||
PODFILE CHECKSUM: b372ee48d5c7639810a0074e34292bc3076ff7f0
|
||||
|
||||
COCOAPODS: 1.0.0
|
||||
|
||||
19
Pods/BSGridCollectionViewLayout/LICENSE
generated
Normal file
19
Pods/BSGridCollectionViewLayout/LICENSE
generated
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2015 Joakim Gyllstrom <joakim@backslashed.se>
|
||||
|
||||
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.
|
||||
284
Pods/BSGridCollectionViewLayout/Pod/Classes/GridCollectionViewLayout.swift
generated
Normal file
284
Pods/BSGridCollectionViewLayout/Pod/Classes/GridCollectionViewLayout.swift
generated
Normal file
@ -0,0 +1,284 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
Provides a grid collection view layout
|
||||
*/
|
||||
@objc(BSGridCollectionViewLayout)
|
||||
public final class GridCollectionViewLayout: UICollectionViewLayout {
|
||||
/**
|
||||
Spacing between items (horizontal and vertical)
|
||||
*/
|
||||
public var itemSpacing: CGFloat = 0 {
|
||||
didSet {
|
||||
_itemSize = estimatedItemSize()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Number of items per row
|
||||
*/
|
||||
public var itemsPerRow = 3 {
|
||||
didSet {
|
||||
_itemSize = estimatedItemSize()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Item height ratio relative to it's width
|
||||
*/
|
||||
public var itemHeightRatio: CGFloat = 1 {
|
||||
didSet {
|
||||
_itemSize = estimatedItemSize()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Size for each item
|
||||
*/
|
||||
public var itemSize: CGSize {
|
||||
get {
|
||||
return _itemSize
|
||||
}
|
||||
}
|
||||
|
||||
var items = 0
|
||||
var rows = 0
|
||||
var _itemSize = CGSizeZero
|
||||
|
||||
public override func prepareLayout() {
|
||||
// Set total number of items and rows
|
||||
items = estimatedNumberOfItems()
|
||||
rows = items / itemsPerRow + ((items % itemsPerRow > 0) ? 1 : 0)
|
||||
|
||||
// Set item size
|
||||
_itemSize = estimatedItemSize()
|
||||
}
|
||||
|
||||
/**
|
||||
See UICollectionViewLayout documentation
|
||||
*/
|
||||
public override func collectionViewContentSize() -> CGSize {
|
||||
guard let collectionView = collectionView where rows > 0 else {
|
||||
return CGSizeZero
|
||||
}
|
||||
|
||||
let height = estimatedRowHeight() * CGFloat(rows)
|
||||
return CGSize(width: collectionView.bounds.width, height: height)
|
||||
}
|
||||
|
||||
/**
|
||||
See UICollectionViewLayout documentation
|
||||
*/
|
||||
public override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
|
||||
return indexPathsInRect(rect).map { (indexPath) -> UICollectionViewLayoutAttributes in
|
||||
return self.layoutAttributesForItemAtIndexPath(indexPath)! // TODO: Fix forcefull unwrap
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See UICollectionViewLayout documentation
|
||||
*/
|
||||
public override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
|
||||
let itemIndex = flatIndex(indexPath) // index among total number of items
|
||||
let rowIndex = itemIndex % itemsPerRow // index within it's row
|
||||
let row = itemIndex / itemsPerRow // which row for that item
|
||||
|
||||
let x = (CGFloat(rowIndex) * itemSpacing) + (CGFloat(rowIndex) * itemSize.width)
|
||||
let y = (CGFloat(row) * itemSpacing) + (CGFloat(row) * itemSize.height)
|
||||
let width = _itemSize.width
|
||||
let height = _itemSize.height
|
||||
|
||||
let attribute = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
|
||||
attribute.frame = CGRect(x: x, y: y, width: width, height: height)
|
||||
|
||||
return attribute
|
||||
}
|
||||
|
||||
/**
|
||||
See UICollectionViewLayout documentation
|
||||
*/
|
||||
public override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// No decoration or supplementary views
|
||||
/**
|
||||
See UICollectionViewLayout documentation
|
||||
*/
|
||||
public override func layoutAttributesForDecorationViewOfKind(elementKind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { return nil }
|
||||
/**
|
||||
See UICollectionViewLayout documentation
|
||||
*/
|
||||
public override func layoutAttributesForSupplementaryViewOfKind(elementKind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { return nil }
|
||||
}
|
||||
|
||||
extension GridCollectionViewLayout {
|
||||
/**
|
||||
Calculates which index paths are within a given rect
|
||||
- parameter rect: The rect which we want index paths for
|
||||
- returns: An array of indexPaths for that rect
|
||||
*/
|
||||
func indexPathsInRect(rect: CGRect) -> [NSIndexPath] {
|
||||
// Make sure we have items/rows
|
||||
guard items > 0 && rows > 0 else { return [] }
|
||||
|
||||
let rowHeight = estimatedRowHeight()
|
||||
|
||||
let startRow = GridCollectionViewLayout.firstRowInRect(rect, withRowHeight: rowHeight)
|
||||
let endRow = GridCollectionViewLayout.lastRowInRect(rect, withRowHeight: rowHeight, max: rows)
|
||||
|
||||
let startIndex = GridCollectionViewLayout.firstIndexInRow(startRow, withItemsPerRow: itemsPerRow)
|
||||
let endIndex = GridCollectionViewLayout.lastIndexInRow(endRow, withItemsPerRow: itemsPerRow, numberOfItems: items)
|
||||
|
||||
let indexPaths = (startIndex...endIndex).map { indexPathFromFlatIndex($0) }
|
||||
|
||||
return indexPaths
|
||||
}
|
||||
|
||||
/**
|
||||
Calculates which row index would be first for a given rect.
|
||||
- parameter rect: The rect to check
|
||||
- parameter rowHeight: Height for a row
|
||||
- returns: First row index
|
||||
*/
|
||||
static func firstRowInRect(rect: CGRect, withRowHeight rowHeight: CGFloat) -> Int {
|
||||
if rect.origin.y / rowHeight < 0 {
|
||||
return 0
|
||||
} else {
|
||||
return Int(rect.origin.y / rowHeight)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Calculates which row index would be last for a given rect.
|
||||
- parameter rect: The rect to check
|
||||
- parameter rowHeight: Height for a row
|
||||
- returns: Last row index
|
||||
*/
|
||||
static func lastRowInRect(rect: CGRect, withRowHeight rowHeight: CGFloat, max: Int) -> Int {
|
||||
guard rect.size.height >= rowHeight else { return 0 }
|
||||
|
||||
if (rect.origin.y + rect.height) / rowHeight > CGFloat(max) {
|
||||
return max - 1
|
||||
} else {
|
||||
return Int(ceil((rect.origin.y + rect.height) / rowHeight)) - 1
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Calculates which index would be the first for a given row.
|
||||
- parameter row: Row index
|
||||
- parameter itemsPerRow: How many items there can be in a row
|
||||
- returns: First index
|
||||
*/
|
||||
static func firstIndexInRow(row: Int, withItemsPerRow itemsPerRow: Int) -> Int {
|
||||
return row * itemsPerRow
|
||||
}
|
||||
|
||||
/**
|
||||
Calculates which index would be the last for a given row.
|
||||
- parameter row: Row index
|
||||
- parameter itemsPerRow: How many items there can be in a row
|
||||
- parameter numberOfItems: The total number of items.
|
||||
- returns: Last index
|
||||
*/
|
||||
static func lastIndexInRow(row: Int, withItemsPerRow itemsPerRow: Int, numberOfItems: Int) -> Int {
|
||||
let maxIndex = (row + 1) * itemsPerRow - 1
|
||||
let bounds = numberOfItems - 1
|
||||
|
||||
if maxIndex > bounds {
|
||||
return bounds
|
||||
} else {
|
||||
return maxIndex
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Takes an index path (which are 2 dimensional) and turns it into a 1 dimensional index
|
||||
- parameter indexPath: The index path we want to flatten
|
||||
- returns: A flat index
|
||||
*/
|
||||
func flatIndex(indexPath: NSIndexPath) -> Int {
|
||||
guard let collectionView = collectionView else {
|
||||
return 0
|
||||
}
|
||||
|
||||
return (0..<indexPath.section).reduce(indexPath.row) { $0 + collectionView.numberOfItemsInSection($1)}
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a flat index into an index path
|
||||
- parameter index: The flat index
|
||||
- returns: An index path
|
||||
*/
|
||||
func indexPathFromFlatIndex(index: Int) -> NSIndexPath {
|
||||
guard let collectionView = collectionView else {
|
||||
return NSIndexPath(forItem: 0, inSection: 0)
|
||||
}
|
||||
|
||||
var item = index
|
||||
var section = 0
|
||||
|
||||
while(item >= collectionView.numberOfItemsInSection(section)) {
|
||||
item -= collectionView.numberOfItemsInSection(section)
|
||||
section += 1
|
||||
}
|
||||
|
||||
return NSIndexPath(forItem: item, inSection: section)
|
||||
}
|
||||
|
||||
/**
|
||||
Estimated the size of the items
|
||||
- returns: Estimated item size
|
||||
*/
|
||||
func estimatedItemSize() -> CGSize {
|
||||
guard let collectionView = collectionView else {
|
||||
return CGSizeZero
|
||||
}
|
||||
|
||||
let itemWidth = (collectionView.bounds.width - CGFloat(itemsPerRow - 1) * itemSpacing) / CGFloat(itemsPerRow)
|
||||
return CGSize(width: itemWidth, height: itemWidth * itemHeightRatio)
|
||||
}
|
||||
|
||||
/**
|
||||
Estimated total number of items
|
||||
- returns: Total number of items
|
||||
*/
|
||||
func estimatedNumberOfItems() -> Int {
|
||||
guard let collectionView = collectionView else {
|
||||
return 0
|
||||
}
|
||||
|
||||
return (0..<collectionView.numberOfSections()).reduce(0, combine: {$0 + collectionView.numberOfItemsInSection($1)})
|
||||
}
|
||||
|
||||
/**
|
||||
Height for each row
|
||||
- returns: Row height
|
||||
*/
|
||||
func estimatedRowHeight() -> CGFloat {
|
||||
return _itemSize.height+itemSpacing
|
||||
}
|
||||
}
|
||||
37
Pods/BSGridCollectionViewLayout/README.md
generated
Normal file
37
Pods/BSGridCollectionViewLayout/README.md
generated
Normal file
@ -0,0 +1,37 @@
|
||||
# BSGridCollectionViewLayout
|
||||
|
||||
[](https://travis-ci.org/mikaoj/BSGridCollectionViewLayout)
|
||||
[](http://cocoapods.org/pods/BSGridCollectionViewLayout)
|
||||
[](http://cocoapods.org/pods/BSGridCollectionViewLayout)
|
||||
[](http://cocoapods.org/pods/BSGridCollectionViewLayout)
|
||||
|
||||
BSGridCollectionViewLayout is a simple UICollectionViewLayout. It simply displays the items in a grid. It doesn't have a concept of sections. So even if the items are in different data source / sections. They will be displayed as being in one continuous grid without any section breaks. I highly doubt that anyone besides me will use this, but I'm using it in [BSImagePicker](https://github.com/mikaoj/BSImagePicker).
|
||||
|
||||
## Usage
|
||||
|
||||
There are 3 properties for you to tweak:
|
||||
* itemsPerRow - Number of items per row
|
||||
* itemSpacing - Spacing between items (vertical and horizontal)
|
||||
* itemHeightRatio - The item height ratio relative to it's width
|
||||
|
||||
To run the example project, clone the repo, and run `pod install` from the Example directory first.
|
||||
|
||||
## Requirements
|
||||
iOS 8
|
||||
|
||||
## Installation
|
||||
|
||||
BSGridCollectionViewLayout is available through [CocoaPods](http://cocoapods.org). To install
|
||||
it, simply add the following line to your Podfile:
|
||||
|
||||
```ruby
|
||||
pod "BSGridCollectionViewLayout", "~> 1.1.0"
|
||||
```
|
||||
|
||||
## Author
|
||||
|
||||
Joakim Gyllstrom, joakim@backslashed.se
|
||||
|
||||
## License
|
||||
|
||||
BSGridCollectionViewLayout is available under the MIT license. See the LICENSE file for more info.
|
||||
19
Pods/BSImagePicker/LICENSE
generated
Normal file
19
Pods/BSImagePicker/LICENSE
generated
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2015 Joakim Gyllstrom <joakim@backslashed.se>
|
||||
|
||||
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.
|
||||
35
Pods/BSImagePicker/Pod/Assets/AlbumTitleView.xib
generated
Normal file
35
Pods/BSImagePicker/Pod/Assets/AlbumTitleView.xib
generated
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AlbumTitleView" customModule="BSImagePicker"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="AlbumTitleView" customModule="BSImagePicker" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XBJ-wa-q8C">
|
||||
<rect key="frame" x="8" y="0.0" width="584" height="30"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerY" secondItem="XBJ-wa-q8C" secondAttribute="centerY" id="VNW-U1-5lq"/>
|
||||
<constraint firstItem="XBJ-wa-q8C" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="8" id="Xu8-zz-8Vo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="XBJ-wa-q8C" secondAttribute="trailing" constant="8" id="je3-VY-t8h"/>
|
||||
<constraint firstAttribute="centerX" secondItem="XBJ-wa-q8C" secondAttribute="centerX" id="yGE-8Z-sir"/>
|
||||
</constraints>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<connections>
|
||||
<outlet property="albumButton" destination="XBJ-wa-q8C" id="rc6-td-vgy"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="920" y="547"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
98
Pods/BSImagePicker/Pod/Assets/Albums.storyboard
generated
Normal file
98
Pods/BSImagePicker/Pod/Assets/Albums.storyboard
generated
Normal file
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Q9l-ou-0o0">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Albums View Controller-->
|
||||
<scene sceneID="YjY-sv-0dD">
|
||||
<objects>
|
||||
<tableViewController id="Q9l-ou-0o0" customClass="AlbumsViewController" customModule="BSImagePicker" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" showsSelectionImmediatelyOnTouchBegin="NO" rowHeight="101" sectionHeaderHeight="22" sectionFooterHeight="22" id="6nu-Xx-FSD">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="albumCell" rowHeight="101" id="5FW-i1-aH0" customClass="AlbumCell" customModule="BSImagePicker" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="22" width="600" height="101"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5FW-i1-aH0" id="MpJ-Bj-9GT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="101"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zMn-pp-w6a">
|
||||
<rect key="frame" x="8" y="8" width="84" height="84"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="8fn-fZ-8zK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="79" height="79"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="79" id="mDR-ZW-Xik"/>
|
||||
<constraint firstAttribute="height" constant="79" id="zzb-5t-cyA"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="OXj-is-Xah">
|
||||
<rect key="frame" x="3" y="3" width="79" height="79"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="79" id="QR9-oB-sPF"/>
|
||||
<constraint firstAttribute="width" constant="79" id="R7u-7Z-ogX"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Smy-yb-FUr">
|
||||
<rect key="frame" x="5" y="5" width="79" height="79"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="79" id="M2H-9X-0nF"/>
|
||||
<constraint firstAttribute="height" constant="79" id="Wju-SN-T78"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="8fn-fZ-8zK" firstAttribute="top" secondItem="zMn-pp-w6a" secondAttribute="top" id="6J5-J4-ifB"/>
|
||||
<constraint firstAttribute="centerY" secondItem="OXj-is-Xah" secondAttribute="centerY" id="7dX-km-JN4"/>
|
||||
<constraint firstAttribute="centerX" secondItem="OXj-is-Xah" secondAttribute="centerX" id="C6n-Nf-d9h"/>
|
||||
<constraint firstAttribute="height" constant="84" id="FV5-Yn-t9n"/>
|
||||
<constraint firstAttribute="width" constant="84" id="HR7-sf-Sgf"/>
|
||||
<constraint firstItem="8fn-fZ-8zK" firstAttribute="leading" secondItem="zMn-pp-w6a" secondAttribute="leading" id="Q1c-pa-CcH"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Smy-yb-FUr" secondAttribute="bottom" id="eYM-Lf-euU"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Smy-yb-FUr" secondAttribute="trailing" id="qhV-0r-QOO"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uKa-te-PJZ">
|
||||
<rect key="frame" x="100" y="16" width="484" height="69"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="zMn-pp-w6a" firstAttribute="leading" secondItem="MpJ-Bj-9GT" secondAttribute="leading" constant="8" id="5aF-MK-NSn"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="uKa-te-PJZ" secondAttribute="trailing" constant="8" id="BXK-YJ-FzQ"/>
|
||||
<constraint firstItem="uKa-te-PJZ" firstAttribute="leading" secondItem="zMn-pp-w6a" secondAttribute="trailing" constant="8" id="Din-LT-3ZI"/>
|
||||
<constraint firstItem="uKa-te-PJZ" firstAttribute="top" secondItem="MpJ-Bj-9GT" secondAttribute="topMargin" constant="8" id="O3E-nL-aDK"/>
|
||||
<constraint firstItem="zMn-pp-w6a" firstAttribute="top" secondItem="MpJ-Bj-9GT" secondAttribute="topMargin" id="kJP-hC-Uuo"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="uKa-te-PJZ" secondAttribute="bottom" constant="8" id="pm0-Do-FXl"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<connections>
|
||||
<outlet property="albumTitleLabel" destination="uKa-te-PJZ" id="9vB-5y-NIb"/>
|
||||
<outlet property="firstImageView" destination="Smy-yb-FUr" id="6Zs-RH-PUe"/>
|
||||
<outlet property="secondImageView" destination="OXj-is-Xah" id="yCp-uY-Vo7"/>
|
||||
<outlet property="thirdImageView" destination="8fn-fZ-8zK" id="FWr-nj-qVY"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="Q9l-ou-0o0" id="bZI-3d-wyC"/>
|
||||
<outlet property="delegate" destination="Q9l-ou-0o0" id="D0z-pb-6qz"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="XXK-R3-4v5" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="636" y="410"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
48
Pods/BSImagePicker/Pod/Assets/CameraCell.xib
generated
Normal file
48
Pods/BSImagePicker/Pod/Assets/CameraCell.xib
generated
Normal file
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CameraCell" customModule="BSImagePicker" customModuleProvider="target"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="cameraCellIdentifier" id="dx2-jd-nta" customClass="CameraCell" customModule="BSImagePicker" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="40Y-IQ-I2M">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="qvQ-jD-B52">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<animations/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.90196079015731812" green="0.90196079015731812" blue="0.90196079015731812" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="40Y-IQ-I2M" secondAttribute="trailing" id="0CF-25-fnk"/>
|
||||
<constraint firstItem="40Y-IQ-I2M" firstAttribute="leading" secondItem="dx2-jd-nta" secondAttribute="leading" id="Le4-AF-WLH"/>
|
||||
<constraint firstAttribute="trailing" secondItem="qvQ-jD-B52" secondAttribute="trailing" id="bMH-5D-RYe"/>
|
||||
<constraint firstItem="qvQ-jD-B52" firstAttribute="top" secondItem="dx2-jd-nta" secondAttribute="top" id="bwE-TQ-qO6"/>
|
||||
<constraint firstAttribute="bottom" secondItem="qvQ-jD-B52" secondAttribute="bottom" id="m9b-Ob-DYN"/>
|
||||
<constraint firstItem="qvQ-jD-B52" firstAttribute="leading" secondItem="dx2-jd-nta" secondAttribute="leading" id="vec-jV-qy2"/>
|
||||
<constraint firstItem="40Y-IQ-I2M" firstAttribute="top" secondItem="dx2-jd-nta" secondAttribute="top" id="vt7-P8-Z2b"/>
|
||||
<constraint firstAttribute="bottom" secondItem="40Y-IQ-I2M" secondAttribute="bottom" id="wug-sP-OLR"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="cameraBackground" destination="40Y-IQ-I2M" id="K5o-kD-cfg"/>
|
||||
<outlet property="imageView" destination="qvQ-jD-B52" id="On7-vu-A1y"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="82" y="280"/>
|
||||
</collectionViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
59
Pods/BSImagePicker/Pod/Assets/PhotoCell.xib
generated
Normal file
59
Pods/BSImagePicker/Pod/Assets/PhotoCell.xib
generated
Normal file
@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PhotoCell" customModule="BSImagePicker" customModuleProvider="target"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="photoCellIdentifier" id="Wnb-Ja-sAy" customClass="PhotoCell" customModule="BSImagePicker">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="eql-VY-cc4">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<animations/>
|
||||
</imageView>
|
||||
<view alpha="0.0" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vrZ-cc-3iN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<view alpha="0.0" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZWL-2w-R4Y" customClass="SelectionView" customModule="BSImagePicker">
|
||||
<rect key="frame" x="71" y="71" width="25" height="25"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="25" id="KmA-hg-Sja"/>
|
||||
<constraint firstAttribute="width" constant="25" id="Sed-si-Khu"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="vrZ-cc-3iN" firstAttribute="leading" secondItem="Wnb-Ja-sAy" secondAttribute="leading" id="1k6-ja-XtL"/>
|
||||
<constraint firstItem="eql-VY-cc4" firstAttribute="leading" secondItem="Wnb-Ja-sAy" secondAttribute="leading" id="6Yj-56-Ajf"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ZWL-2w-R4Y" secondAttribute="bottom" constant="4" id="9kI-gE-Fuo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="vrZ-cc-3iN" secondAttribute="trailing" id="Cpg-dZ-0Lg"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ZWL-2w-R4Y" secondAttribute="trailing" constant="4" id="Mxn-IB-9vl"/>
|
||||
<constraint firstAttribute="bottom" secondItem="vrZ-cc-3iN" secondAttribute="bottom" id="Uh1-N4-v8c"/>
|
||||
<constraint firstItem="eql-VY-cc4" firstAttribute="top" secondItem="Wnb-Ja-sAy" secondAttribute="top" id="bsa-1y-CS3"/>
|
||||
<constraint firstAttribute="trailing" secondItem="eql-VY-cc4" secondAttribute="trailing" id="gn3-z2-xcM"/>
|
||||
<constraint firstAttribute="bottom" secondItem="eql-VY-cc4" secondAttribute="bottom" id="lRC-Wc-2F2"/>
|
||||
<constraint firstItem="vrZ-cc-3iN" firstAttribute="top" secondItem="Wnb-Ja-sAy" secondAttribute="top" id="rDa-oL-Q0g"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="imageView" destination="eql-VY-cc4" id="zoV-fy-Rn2"/>
|
||||
<outlet property="selectionOverlayView" destination="vrZ-cc-3iN" id="nJv-4W-hIL"/>
|
||||
<outlet property="selectionView" destination="ZWL-2w-R4Y" id="hKH-1U-TY9"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="174" y="-76"/>
|
||||
</collectionViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
BIN
Pods/BSImagePicker/Pod/Assets/add_photo.png
generated
Normal file
BIN
Pods/BSImagePicker/Pod/Assets/add_photo.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 545 B |
BIN
Pods/BSImagePicker/Pod/Assets/add_photo@2x.png
generated
Normal file
BIN
Pods/BSImagePicker/Pod/Assets/add_photo@2x.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
BIN
Pods/BSImagePicker/Pod/Assets/add_photo@3x.png
generated
Normal file
BIN
Pods/BSImagePicker/Pod/Assets/add_photo@3x.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Pods/BSImagePicker/Pod/Assets/arrow_down@1x.png
generated
Normal file
BIN
Pods/BSImagePicker/Pod/Assets/arrow_down@1x.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 200 B |
BIN
Pods/BSImagePicker/Pod/Assets/arrow_down@2x.png
generated
Normal file
BIN
Pods/BSImagePicker/Pod/Assets/arrow_down@2x.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 227 B |
BIN
Pods/BSImagePicker/Pod/Assets/arrow_down@3x.png
generated
Normal file
BIN
Pods/BSImagePicker/Pod/Assets/arrow_down@3x.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 270 B |
39
Pods/BSImagePicker/Pod/Classes/Controller/AlbumsViewController.swift
generated
Normal file
39
Pods/BSImagePicker/Pod/Classes/Controller/AlbumsViewController.swift
generated
Normal file
@ -0,0 +1,39 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
final class AlbumsViewController: UITableViewController {
|
||||
override func loadView() {
|
||||
super.loadView()
|
||||
|
||||
// Add a little bit of blur to the background
|
||||
let visualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(forBlurEffect: UIBlurEffect(style: .Light)))
|
||||
visualEffectView.frame = tableView.bounds
|
||||
visualEffectView.autoresizingMask = [.FlexibleWidth , .FlexibleHeight]
|
||||
tableView.backgroundView = visualEffectView
|
||||
tableView.backgroundColor = UIColor.clearColor()
|
||||
|
||||
modalPresentationStyle = .Popover
|
||||
preferredContentSize = CGSize(width: 320, height: 300)
|
||||
}
|
||||
}
|
||||
252
Pods/BSImagePicker/Pod/Classes/Controller/BSImagePickerViewController.swift
generated
Normal file
252
Pods/BSImagePicker/Pod/Classes/Controller/BSImagePickerViewController.swift
generated
Normal file
@ -0,0 +1,252 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import Photos
|
||||
|
||||
/**
|
||||
BSImagePickerViewController.
|
||||
Use settings or buttons to customize it to your needs.
|
||||
*/
|
||||
public class BSImagePickerViewController : UINavigationController {
|
||||
/**
|
||||
Object that keeps settings for the picker.
|
||||
*/
|
||||
public var settings: BSImagePickerSettings = Settings()
|
||||
|
||||
/**
|
||||
Done button.
|
||||
*/
|
||||
public var doneButton: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: nil, action: nil)
|
||||
|
||||
/**
|
||||
Cancel button
|
||||
*/
|
||||
public var cancelButton: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Cancel, target: nil, action: nil)
|
||||
|
||||
/**
|
||||
Default selections
|
||||
*/
|
||||
public var defaultSelections: PHFetchResult?
|
||||
|
||||
/**
|
||||
Fetch results.
|
||||
*/
|
||||
public lazy var fetchResults: [PHFetchResult] = {
|
||||
let fetchOptions = PHFetchOptions()
|
||||
|
||||
// Camera roll fetch result
|
||||
let cameraRollResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: fetchOptions)
|
||||
|
||||
// Albums fetch result
|
||||
let albumResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
|
||||
|
||||
return [cameraRollResult, albumResult]
|
||||
}()
|
||||
|
||||
var albumTitleView: AlbumTitleView = bundle.loadNibNamed("AlbumTitleView", owner: nil, options: nil).first as! AlbumTitleView
|
||||
|
||||
static let bundle: NSBundle = NSBundle(path: NSBundle(forClass: PhotosViewController.self).pathForResource("BSImagePicker", ofType: "bundle")!)!
|
||||
|
||||
lazy var photosViewController: PhotosViewController = {
|
||||
let vc = PhotosViewController(fetchResults: self.fetchResults,
|
||||
defaultSelections: self.defaultSelections,
|
||||
settings: self.settings)
|
||||
|
||||
vc.doneBarButton = self.doneButton
|
||||
vc.cancelBarButton = self.cancelButton
|
||||
vc.albumTitleView = self.albumTitleView
|
||||
|
||||
return vc
|
||||
}()
|
||||
|
||||
class func authorize(status: PHAuthorizationStatus = PHPhotoLibrary.authorizationStatus(), fromViewController: UIViewController, completion: (authorized: Bool) -> Void) {
|
||||
switch status {
|
||||
case .Authorized:
|
||||
// We are authorized. Run block
|
||||
completion(authorized: true)
|
||||
case .NotDetermined:
|
||||
// Ask user for permission
|
||||
PHPhotoLibrary.requestAuthorization({ (status) -> Void in
|
||||
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
||||
self.authorize(status, fromViewController: fromViewController, completion: completion)
|
||||
})
|
||||
})
|
||||
default: ()
|
||||
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
||||
completion(authorized: false)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Sets up an classic image picker with results from camera roll and albums
|
||||
*/
|
||||
public init() {
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
}
|
||||
|
||||
/**
|
||||
https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
||||
*/
|
||||
required public init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
}
|
||||
|
||||
/**
|
||||
Load view. See apple documentation
|
||||
*/
|
||||
public override func loadView() {
|
||||
super.loadView()
|
||||
|
||||
// TODO: Settings
|
||||
view.backgroundColor = UIColor.whiteColor()
|
||||
|
||||
// Make sure we really are authorized
|
||||
if PHPhotoLibrary.authorizationStatus() == .Authorized {
|
||||
setViewControllers([photosViewController], animated: false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: ImagePickerSettings proxy
|
||||
extension BSImagePickerViewController: BSImagePickerSettings {
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var maxNumberOfSelections: Int {
|
||||
get {
|
||||
return settings.maxNumberOfSelections
|
||||
}
|
||||
set {
|
||||
settings.maxNumberOfSelections = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var selectionCharacter: Character? {
|
||||
get {
|
||||
return settings.selectionCharacter
|
||||
}
|
||||
set {
|
||||
settings.selectionCharacter = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var selectionFillColor: UIColor {
|
||||
get {
|
||||
return settings.selectionFillColor
|
||||
}
|
||||
set {
|
||||
settings.selectionFillColor = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var selectionStrokeColor: UIColor {
|
||||
get {
|
||||
return settings.selectionStrokeColor
|
||||
}
|
||||
set {
|
||||
settings.selectionStrokeColor = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var selectionShadowColor: UIColor {
|
||||
get {
|
||||
return settings.selectionShadowColor
|
||||
}
|
||||
set {
|
||||
settings.selectionShadowColor = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var selectionTextAttributes: [String: AnyObject] {
|
||||
get {
|
||||
return settings.selectionTextAttributes
|
||||
}
|
||||
set {
|
||||
settings.selectionTextAttributes = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var cellsPerRow: (verticalSize: UIUserInterfaceSizeClass, horizontalSize: UIUserInterfaceSizeClass) -> Int {
|
||||
get {
|
||||
return settings.cellsPerRow
|
||||
}
|
||||
set {
|
||||
settings.cellsPerRow = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
See BSImagePicketSettings for documentation
|
||||
*/
|
||||
public var takePhotos: Bool {
|
||||
get {
|
||||
return settings.takePhotos
|
||||
}
|
||||
set {
|
||||
settings.takePhotos = newValue
|
||||
}
|
||||
}
|
||||
|
||||
public var takePhotoIcon: UIImage? {
|
||||
get {
|
||||
return settings.takePhotoIcon
|
||||
}
|
||||
set {
|
||||
settings.takePhotoIcon = newValue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Album button
|
||||
extension BSImagePickerViewController {
|
||||
/**
|
||||
Album button in title view
|
||||
*/
|
||||
public var albumButton: UIButton {
|
||||
get {
|
||||
return albumTitleView.albumButton
|
||||
}
|
||||
set {
|
||||
albumTitleView.albumButton = newValue
|
||||
}
|
||||
}
|
||||
}
|
||||
567
Pods/BSImagePicker/Pod/Classes/Controller/PhotosViewController.swift
generated
Normal file
567
Pods/BSImagePicker/Pod/Classes/Controller/PhotosViewController.swift
generated
Normal file
@ -0,0 +1,567 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import Photos
|
||||
import BSGridCollectionViewLayout
|
||||
|
||||
final class PhotosViewController : UICollectionViewController {
|
||||
var selectionClosure: ((asset: PHAsset) -> Void)?
|
||||
var deselectionClosure: ((asset: PHAsset) -> Void)?
|
||||
var cancelClosure: ((assets: [PHAsset]) -> Void)?
|
||||
var finishClosure: ((assets: [PHAsset]) -> Void)?
|
||||
|
||||
var doneBarButton: UIBarButtonItem?
|
||||
var cancelBarButton: UIBarButtonItem?
|
||||
var albumTitleView: AlbumTitleView?
|
||||
|
||||
let expandAnimator = ZoomAnimator()
|
||||
let shrinkAnimator = ZoomAnimator()
|
||||
|
||||
private var photosDataSource: PhotoCollectionViewDataSource?
|
||||
private var albumsDataSource: AlbumTableViewDataSource
|
||||
private let cameraDataSource: CameraCollectionViewDataSource
|
||||
private var composedDataSource: ComposedCollectionViewDataSource?
|
||||
|
||||
private var defaultSelections: PHFetchResult?
|
||||
|
||||
let settings: BSImagePickerSettings
|
||||
|
||||
private var doneBarButtonTitle: String?
|
||||
|
||||
lazy var albumsViewController: AlbumsViewController = {
|
||||
let storyboard = UIStoryboard(name: "Albums", bundle: BSImagePickerViewController.bundle)
|
||||
let vc = storyboard.instantiateInitialViewController() as! AlbumsViewController
|
||||
vc.tableView.dataSource = self.albumsDataSource
|
||||
vc.tableView.delegate = self
|
||||
|
||||
return vc
|
||||
}()
|
||||
|
||||
private lazy var previewViewContoller: PreviewViewController? = {
|
||||
return PreviewViewController(nibName: nil, bundle: nil)
|
||||
}()
|
||||
|
||||
required init(fetchResults: [PHFetchResult], defaultSelections: PHFetchResult? = nil, settings aSettings: BSImagePickerSettings) {
|
||||
albumsDataSource = AlbumTableViewDataSource(fetchResults: fetchResults)
|
||||
cameraDataSource = CameraCollectionViewDataSource(settings: aSettings, cameraAvailable: UIImagePickerController.isSourceTypeAvailable(.Camera))
|
||||
self.defaultSelections = defaultSelections
|
||||
settings = aSettings
|
||||
|
||||
super.init(collectionViewLayout: GridCollectionViewLayout())
|
||||
|
||||
PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
|
||||
}
|
||||
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
fatalError("b0rk: initWithCoder not implemented")
|
||||
}
|
||||
|
||||
deinit {
|
||||
PHPhotoLibrary.sharedPhotoLibrary().unregisterChangeObserver(self)
|
||||
}
|
||||
|
||||
override func loadView() {
|
||||
super.loadView()
|
||||
|
||||
// Setup collection view
|
||||
collectionView?.backgroundColor = UIColor.whiteColor()
|
||||
collectionView?.allowsMultipleSelection = true
|
||||
|
||||
// Set an empty title to get < back button
|
||||
title = " "
|
||||
|
||||
// Set button actions and add them to navigation item
|
||||
doneBarButton?.target = self
|
||||
doneBarButton?.action = #selector(PhotosViewController.doneButtonPressed(_:))
|
||||
cancelBarButton?.target = self
|
||||
cancelBarButton?.action = #selector(PhotosViewController.cancelButtonPressed(_:))
|
||||
albumTitleView?.albumButton?.addTarget(self, action: #selector(PhotosViewController.albumButtonPressed(_:)), forControlEvents: .TouchUpInside)
|
||||
navigationItem.leftBarButtonItem = cancelBarButton
|
||||
navigationItem.rightBarButtonItem = doneBarButton
|
||||
navigationItem.titleView = albumTitleView
|
||||
|
||||
if let album = albumsDataSource.fetchResults.first?.firstObject as? PHAssetCollection {
|
||||
initializePhotosDataSource(album, selections: defaultSelections)
|
||||
updateAlbumTitle(album)
|
||||
synchronizeCollectionView()
|
||||
}
|
||||
|
||||
// Add long press recognizer
|
||||
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(PhotosViewController.collectionViewLongPressed(_:)))
|
||||
longPressRecognizer.minimumPressDuration = 0.5
|
||||
collectionView?.addGestureRecognizer(longPressRecognizer)
|
||||
|
||||
// Set navigation controller delegate
|
||||
navigationController?.delegate = self
|
||||
|
||||
// Register cells
|
||||
photosDataSource?.registerCellIdentifiersForCollectionView(collectionView)
|
||||
cameraDataSource.registerCellIdentifiersForCollectionView(collectionView)
|
||||
}
|
||||
|
||||
// MARK: Appear/Disappear
|
||||
override func viewWillAppear(animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
updateDoneButton()
|
||||
}
|
||||
|
||||
// MARK: Button actions
|
||||
func cancelButtonPressed(sender: UIBarButtonItem) {
|
||||
guard let closure = cancelClosure, let photosDataSource = photosDataSource else {
|
||||
dismissViewControllerAnimated(true, completion: nil)
|
||||
return
|
||||
}
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
|
||||
closure(assets: photosDataSource.selections)
|
||||
})
|
||||
|
||||
dismissViewControllerAnimated(true, completion: nil)
|
||||
}
|
||||
|
||||
func doneButtonPressed(sender: UIBarButtonItem) {
|
||||
guard let closure = finishClosure, let photosDataSource = photosDataSource else {
|
||||
dismissViewControllerAnimated(true, completion: nil)
|
||||
return
|
||||
}
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
|
||||
closure(assets: photosDataSource.selections)
|
||||
})
|
||||
|
||||
dismissViewControllerAnimated(true, completion: nil)
|
||||
}
|
||||
|
||||
func albumButtonPressed(sender: UIButton) {
|
||||
guard let popVC = albumsViewController.popoverPresentationController else {
|
||||
return
|
||||
}
|
||||
|
||||
popVC.permittedArrowDirections = .Up
|
||||
popVC.sourceView = sender
|
||||
let senderRect = sender.convertRect(sender.frame, fromView: sender.superview)
|
||||
let sourceRect = CGRect(x: senderRect.origin.x, y: senderRect.origin.y + (sender.frame.size.height / 2), width: senderRect.size.width, height: senderRect.size.height)
|
||||
popVC.sourceRect = sourceRect
|
||||
popVC.delegate = self
|
||||
albumsViewController.tableView.reloadData()
|
||||
|
||||
presentViewController(albumsViewController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func collectionViewLongPressed(sender: UIGestureRecognizer) {
|
||||
if sender.state == .Began {
|
||||
// Disable recognizer while we are figuring out location and pushing preview
|
||||
sender.enabled = false
|
||||
collectionView?.userInteractionEnabled = false
|
||||
|
||||
// Calculate which index path long press came from
|
||||
let location = sender.locationInView(collectionView)
|
||||
let indexPath = collectionView?.indexPathForItemAtPoint(location)
|
||||
|
||||
if let vc = previewViewContoller, let indexPath = indexPath, let cell = collectionView?.cellForItemAtIndexPath(indexPath) as? PhotoCell, let asset = cell.asset {
|
||||
// Setup fetch options to be synchronous
|
||||
let options = PHImageRequestOptions()
|
||||
options.synchronous = true
|
||||
|
||||
// Load image for preview
|
||||
if let imageView = vc.imageView {
|
||||
PHCachingImageManager.defaultManager().requestImageForAsset(asset, targetSize:imageView.frame.size, contentMode: .AspectFit, options: options) { (result, _) in
|
||||
imageView.image = result
|
||||
}
|
||||
}
|
||||
|
||||
// Setup animation
|
||||
expandAnimator.sourceImageView = cell.imageView
|
||||
expandAnimator.destinationImageView = vc.imageView
|
||||
shrinkAnimator.sourceImageView = vc.imageView
|
||||
shrinkAnimator.destinationImageView = cell.imageView
|
||||
|
||||
navigationController?.pushViewController(vc, animated: true)
|
||||
}
|
||||
|
||||
// Re-enable recognizer, after animation is done
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(expandAnimator.transitionDuration(nil) * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), { () -> Void in
|
||||
sender.enabled = true
|
||||
self.collectionView?.userInteractionEnabled = true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Private helper methods
|
||||
func updateDoneButton() {
|
||||
// Find right button
|
||||
if let subViews = navigationController?.navigationBar.subviews, let photosDataSource = photosDataSource {
|
||||
for view in subViews {
|
||||
if let btn = view as? UIButton where checkIfRightButtonItem(btn) {
|
||||
// Store original title if we havn't got it
|
||||
if doneBarButtonTitle == nil {
|
||||
doneBarButtonTitle = btn.titleForState(.Normal)
|
||||
}
|
||||
|
||||
// Update title
|
||||
if let doneBarButtonTitle = doneBarButtonTitle {
|
||||
// Special case if we have selected 1 image and that is
|
||||
// the max number of allowed selections
|
||||
if (photosDataSource.selections.count == 1 && self.settings.maxNumberOfSelections == 1) {
|
||||
btn.bs_setTitleWithoutAnimation("\(doneBarButtonTitle)", forState: .Normal)
|
||||
} else if photosDataSource.selections.count > 0 {
|
||||
btn.bs_setTitleWithoutAnimation("\(doneBarButtonTitle) (\(photosDataSource.selections.count))", forState: .Normal)
|
||||
} else {
|
||||
btn.bs_setTitleWithoutAnimation(doneBarButtonTitle, forState: .Normal)
|
||||
}
|
||||
|
||||
// Enabled?
|
||||
doneBarButton?.enabled = photosDataSource.selections.count > 0
|
||||
}
|
||||
|
||||
// Stop loop
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if a give UIButton is the right UIBarButtonItem in the navigation bar
|
||||
// Somewhere along the road, our UIBarButtonItem gets transformed to an UINavigationButton
|
||||
func checkIfRightButtonItem(btn: UIButton) -> Bool {
|
||||
guard let rightButton = navigationItem.rightBarButtonItem else {
|
||||
return false
|
||||
}
|
||||
|
||||
// Store previous values
|
||||
let wasRightEnabled = rightButton.enabled
|
||||
let wasButtonEnabled = btn.enabled
|
||||
|
||||
// Set a known state for both buttons
|
||||
rightButton.enabled = false
|
||||
btn.enabled = false
|
||||
|
||||
// Change one and see if other also changes
|
||||
rightButton.enabled = true
|
||||
let isRightButton = btn.enabled
|
||||
|
||||
// Reset
|
||||
rightButton.enabled = wasRightEnabled
|
||||
btn.enabled = wasButtonEnabled
|
||||
|
||||
return isRightButton
|
||||
}
|
||||
|
||||
func synchronizeSelectionInCollectionView(collectionView: UICollectionView) {
|
||||
guard let photosDataSource = photosDataSource else {
|
||||
return
|
||||
}
|
||||
|
||||
// Get indexes of the selected assets
|
||||
let mutableIndexSet = NSMutableIndexSet()
|
||||
for object in photosDataSource.selections {
|
||||
let index = photosDataSource.fetchResult.indexOfObject(object)
|
||||
if index != NSNotFound {
|
||||
mutableIndexSet.addIndex(index)
|
||||
}
|
||||
}
|
||||
|
||||
// Convert into index paths
|
||||
let indexPaths = mutableIndexSet.bs_indexPathsForSection(1)
|
||||
|
||||
// Loop through them and set them as selected in the collection view
|
||||
for indexPath in indexPaths {
|
||||
collectionView.selectItemAtIndexPath(indexPath, animated: false, scrollPosition: .None)
|
||||
}
|
||||
}
|
||||
|
||||
func updateAlbumTitle(album: PHAssetCollection) {
|
||||
if let title = album.localizedTitle {
|
||||
// Update album title
|
||||
albumTitleView?.albumTitle = title
|
||||
}
|
||||
}
|
||||
|
||||
func initializePhotosDataSource(album: PHAssetCollection, selections: PHFetchResult? = nil) {
|
||||
// Set up a photo data source with album
|
||||
let fetchOptions = PHFetchOptions()
|
||||
fetchOptions.sortDescriptors = [
|
||||
NSSortDescriptor(key: "creationDate", ascending: false)
|
||||
]
|
||||
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
|
||||
initializePhotosDataSourceWithFetchResult(PHAsset.fetchAssetsInAssetCollection(album, options: fetchOptions), selections: selections)
|
||||
}
|
||||
|
||||
func initializePhotosDataSourceWithFetchResult(fetchResult: PHFetchResult, selections: PHFetchResult? = nil) {
|
||||
let newDataSource = PhotoCollectionViewDataSource(fetchResult: fetchResult, selections: selections, settings: settings)
|
||||
|
||||
// Transfer image size
|
||||
// TODO: Move image size to settings
|
||||
if let photosDataSource = photosDataSource {
|
||||
newDataSource.imageSize = photosDataSource.imageSize
|
||||
newDataSource.selections = photosDataSource.selections
|
||||
}
|
||||
|
||||
photosDataSource = newDataSource
|
||||
|
||||
// Hook up data source
|
||||
composedDataSource = ComposedCollectionViewDataSource(dataSources: [cameraDataSource, newDataSource])
|
||||
collectionView?.dataSource = composedDataSource
|
||||
collectionView?.delegate = self
|
||||
}
|
||||
|
||||
func synchronizeCollectionView() {
|
||||
guard let collectionView = collectionView else {
|
||||
return
|
||||
}
|
||||
|
||||
// Reload and sync selections
|
||||
collectionView.reloadData()
|
||||
synchronizeSelectionInCollectionView(collectionView)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UICollectionViewDelegate
|
||||
extension PhotosViewController {
|
||||
override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
|
||||
// Camera shouldn't be selected, but pop the UIImagePickerController!
|
||||
if let composedDataSource = composedDataSource where composedDataSource.dataSources[indexPath.section].isEqual(cameraDataSource) {
|
||||
let cameraController = UIImagePickerController()
|
||||
cameraController.allowsEditing = false
|
||||
cameraController.sourceType = .Camera
|
||||
cameraController.delegate = self
|
||||
|
||||
self.presentViewController(cameraController, animated: true, completion: nil)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
return collectionView.userInteractionEnabled && photosDataSource!.selections.count < settings.maxNumberOfSelections
|
||||
}
|
||||
|
||||
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
|
||||
guard let photosDataSource = photosDataSource, let cell = collectionView.cellForItemAtIndexPath(indexPath) as? PhotoCell, let asset = photosDataSource.fetchResult.objectAtIndex(indexPath.row) as? PHAsset else {
|
||||
return
|
||||
}
|
||||
|
||||
// Select asset if not already selected
|
||||
photosDataSource.selections.append(asset)
|
||||
|
||||
// Set selection number
|
||||
if let selectionCharacter = settings.selectionCharacter {
|
||||
cell.selectionString = String(selectionCharacter)
|
||||
} else {
|
||||
cell.selectionString = String(photosDataSource.selections.count)
|
||||
}
|
||||
|
||||
// Update done button
|
||||
updateDoneButton()
|
||||
|
||||
// Call selection closure
|
||||
if let closure = selectionClosure {
|
||||
dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
|
||||
closure(asset: asset)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
|
||||
guard let photosDataSource = photosDataSource, let asset = photosDataSource.fetchResult.objectAtIndex(indexPath.row) as? PHAsset, let index = photosDataSource.selections.indexOf(asset) else {
|
||||
return
|
||||
}
|
||||
|
||||
// Deselect asset
|
||||
photosDataSource.selections.removeAtIndex(index)
|
||||
|
||||
// Update done button
|
||||
updateDoneButton()
|
||||
|
||||
// Reload selected cells to update their selection number
|
||||
if let selectedIndexPaths = collectionView.indexPathsForSelectedItems() {
|
||||
UIView.setAnimationsEnabled(false)
|
||||
collectionView.reloadItemsAtIndexPaths(selectedIndexPaths)
|
||||
synchronizeSelectionInCollectionView(collectionView)
|
||||
UIView.setAnimationsEnabled(true)
|
||||
}
|
||||
|
||||
// Call deselection closure
|
||||
if let closure = deselectionClosure {
|
||||
dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
|
||||
closure(asset: asset)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
|
||||
guard let cell = cell as? CameraCell else {
|
||||
return
|
||||
}
|
||||
|
||||
cell.startLiveBackground() // Start live background
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UIPopoverPresentationControllerDelegate
|
||||
extension PhotosViewController: UIPopoverPresentationControllerDelegate {
|
||||
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
|
||||
return .None
|
||||
}
|
||||
|
||||
func popoverPresentationControllerShouldDismissPopover(popoverPresentationController: UIPopoverPresentationController) -> Bool {
|
||||
return true
|
||||
}
|
||||
}
|
||||
// MARK: UINavigationControllerDelegate
|
||||
extension PhotosViewController: UINavigationControllerDelegate {
|
||||
func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
|
||||
if operation == .Push {
|
||||
return expandAnimator
|
||||
} else {
|
||||
return shrinkAnimator
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UITableViewDelegate
|
||||
extension PhotosViewController: UITableViewDelegate {
|
||||
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
|
||||
// Update photos data source
|
||||
if let album = albumsDataSource.fetchResults[indexPath.section][indexPath.row] as? PHAssetCollection {
|
||||
initializePhotosDataSource(album)
|
||||
updateAlbumTitle(album)
|
||||
synchronizeCollectionView()
|
||||
}
|
||||
|
||||
// Dismiss album selection
|
||||
albumsViewController.dismissViewControllerAnimated(true, completion: nil)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Traits
|
||||
extension PhotosViewController {
|
||||
override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
|
||||
super.traitCollectionDidChange(previousTraitCollection)
|
||||
|
||||
if let collectionViewFlowLayout = collectionViewLayout as? GridCollectionViewLayout {
|
||||
let itemSpacing: CGFloat = 2.0
|
||||
let cellsPerRow = settings.cellsPerRow(verticalSize: traitCollection.verticalSizeClass, horizontalSize: traitCollection.horizontalSizeClass)
|
||||
|
||||
collectionViewFlowLayout.itemSpacing = itemSpacing
|
||||
collectionViewFlowLayout.itemsPerRow = cellsPerRow
|
||||
|
||||
photosDataSource?.imageSize = collectionViewFlowLayout.itemSize
|
||||
|
||||
updateDoneButton()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UIImagePickerControllerDelegate
|
||||
extension PhotosViewController: UIImagePickerControllerDelegate {
|
||||
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
|
||||
guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else {
|
||||
picker.dismissViewControllerAnimated(true, completion: nil)
|
||||
return
|
||||
}
|
||||
|
||||
var placeholder: PHObjectPlaceholder?
|
||||
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
|
||||
let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
|
||||
placeholder = request.placeholderForCreatedAsset
|
||||
}, completionHandler: { success, error in
|
||||
guard let placeholder = placeholder, let asset = PHAsset.fetchAssetsWithLocalIdentifiers([placeholder.localIdentifier], options: nil).firstObject as? PHAsset where success == true else {
|
||||
picker.dismissViewControllerAnimated(true, completion: nil)
|
||||
return
|
||||
}
|
||||
|
||||
dispatch_async(dispatch_get_main_queue()) {
|
||||
// TODO: move to a function. this is duplicated in didSelect
|
||||
self.photosDataSource?.selections.append(asset)
|
||||
self.updateDoneButton()
|
||||
|
||||
// Call selection closure
|
||||
if let closure = self.selectionClosure {
|
||||
dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
|
||||
closure(asset: asset)
|
||||
})
|
||||
}
|
||||
|
||||
picker.dismissViewControllerAnimated(true, completion: nil)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
|
||||
picker.dismissViewControllerAnimated(true, completion: nil)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: PHPhotoLibraryChangeObserver
|
||||
extension PhotosViewController: PHPhotoLibraryChangeObserver {
|
||||
func photoLibraryDidChange(changeInstance: PHChange) {
|
||||
guard let photosDataSource = photosDataSource, let collectionView = collectionView else {
|
||||
return
|
||||
}
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
||||
if let photosChanges = changeInstance.changeDetailsForFetchResult(photosDataSource.fetchResult) {
|
||||
// Update collection view
|
||||
// Alright...we get spammed with change notifications, even when there are none. So guard against it
|
||||
if photosChanges.hasIncrementalChanges && (photosChanges.removedIndexes?.count > 0 || photosChanges.insertedIndexes?.count > 0 || photosChanges.changedIndexes?.count > 0) {
|
||||
// Update fetch result
|
||||
photosDataSource.fetchResult = photosChanges.fetchResultAfterChanges
|
||||
|
||||
if let removed = photosChanges.removedIndexes {
|
||||
collectionView.deleteItemsAtIndexPaths(removed.bs_indexPathsForSection(1))
|
||||
}
|
||||
|
||||
if let inserted = photosChanges.insertedIndexes {
|
||||
collectionView.insertItemsAtIndexPaths(inserted.bs_indexPathsForSection(1))
|
||||
}
|
||||
|
||||
// Changes is causing issues right now...fix me later
|
||||
// Example of issue:
|
||||
// 1. Take a new photo
|
||||
// 2. We will get a change telling to insert that asset
|
||||
// 3. While it's being inserted we get a bunch of change request for that same asset
|
||||
// 4. It flickers when reloading it while being inserted
|
||||
// TODO: FIX
|
||||
// if let changed = photosChanges.changedIndexes {
|
||||
// print("changed")
|
||||
// collectionView.reloadItemsAtIndexPaths(changed.bs_indexPathsForSection(1))
|
||||
// }
|
||||
|
||||
// Sync selection
|
||||
self.synchronizeSelectionInCollectionView(collectionView)
|
||||
} else if photosChanges.hasIncrementalChanges == false {
|
||||
// Update fetch result
|
||||
photosDataSource.fetchResult = photosChanges.fetchResultAfterChanges
|
||||
|
||||
collectionView.reloadData()
|
||||
|
||||
// Sync selection
|
||||
self.synchronizeSelectionInCollectionView(collectionView)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
// TODO: Changes in albums
|
||||
}
|
||||
}
|
||||
85
Pods/BSImagePicker/Pod/Classes/Controller/PreviewViewController.swift
generated
Normal file
85
Pods/BSImagePicker/Pod/Classes/Controller/PreviewViewController.swift
generated
Normal file
@ -0,0 +1,85 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
final class PreviewViewController : UIViewController {
|
||||
var imageView: UIImageView?
|
||||
private var fullscreen = false
|
||||
|
||||
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
|
||||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||
|
||||
view.backgroundColor = UIColor.whiteColor()
|
||||
|
||||
imageView = UIImageView(frame: view.bounds)
|
||||
imageView?.contentMode = .ScaleAspectFit
|
||||
imageView?.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
|
||||
view.addSubview(imageView!)
|
||||
|
||||
let tapRecognizer = UITapGestureRecognizer()
|
||||
tapRecognizer.numberOfTapsRequired = 1
|
||||
tapRecognizer.addTarget(self, action: #selector(PreviewViewController.toggleFullscreen))
|
||||
view.addGestureRecognizer(tapRecognizer)
|
||||
}
|
||||
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
}
|
||||
|
||||
override func loadView() {
|
||||
super.loadView()
|
||||
}
|
||||
|
||||
func toggleFullscreen() {
|
||||
fullscreen = !fullscreen
|
||||
UIView.animateWithDuration(0.3, animations: { () -> Void in
|
||||
self.toggleNavigationBar()
|
||||
self.toggleStatusBar()
|
||||
self.toggleBackgroundColor()
|
||||
})
|
||||
}
|
||||
|
||||
func toggleNavigationBar() {
|
||||
navigationController?.setNavigationBarHidden(fullscreen, animated: true)
|
||||
}
|
||||
|
||||
func toggleStatusBar() {
|
||||
self.setNeedsStatusBarAppearanceUpdate()
|
||||
}
|
||||
|
||||
func toggleBackgroundColor() {
|
||||
let aColor: UIColor
|
||||
|
||||
if self.fullscreen {
|
||||
aColor = UIColor.blackColor()
|
||||
} else {
|
||||
aColor = UIColor.whiteColor()
|
||||
}
|
||||
|
||||
self.view.backgroundColor = aColor
|
||||
}
|
||||
|
||||
override func prefersStatusBarHidden() -> Bool {
|
||||
return fullscreen
|
||||
}
|
||||
}
|
||||
102
Pods/BSImagePicker/Pod/Classes/Controller/ZoomAnimator.swift
generated
Normal file
102
Pods/BSImagePicker/Pod/Classes/Controller/ZoomAnimator.swift
generated
Normal file
@ -0,0 +1,102 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import UIImageViewModeScaleAspect
|
||||
|
||||
final class ZoomAnimator : NSObject, UIViewControllerAnimatedTransitioning {
|
||||
var sourceImageView: UIImageView?
|
||||
var destinationImageView: UIImageView?
|
||||
|
||||
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
|
||||
return 0.3
|
||||
}
|
||||
|
||||
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
|
||||
// Get to and from view controller
|
||||
if let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey), let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey), let sourceImageView = sourceImageView, let destinationImageView = destinationImageView, let containerView = transitionContext.containerView() {
|
||||
// Disable selection so we don't select anything while the push animation is running
|
||||
fromViewController.view?.userInteractionEnabled = false
|
||||
|
||||
// Setup views
|
||||
sourceImageView.hidden = true
|
||||
destinationImageView.hidden = true
|
||||
toViewController.view.alpha = 0.0
|
||||
fromViewController.view.alpha = 1.0
|
||||
containerView.backgroundColor = toViewController.view.backgroundColor
|
||||
|
||||
// Setup scaling image
|
||||
let scalingFrame = containerView.convertRect(sourceImageView.frame, fromView: sourceImageView.superview)
|
||||
let scalingImage = UIImageViewModeScaleAspect(frame: scalingFrame)
|
||||
scalingImage.contentMode = sourceImageView.contentMode
|
||||
scalingImage.image = sourceImageView.image
|
||||
|
||||
//Init image scale
|
||||
let destinationFrame = toViewController.view.convertRect(destinationImageView.bounds, fromView: destinationImageView.superview)
|
||||
if destinationImageView.contentMode == .ScaleAspectFit {
|
||||
scalingImage.initToScaleAspectFitToFrame(destinationFrame)
|
||||
} else {
|
||||
scalingImage.initToScaleAspectFillToFrame(destinationFrame)
|
||||
}
|
||||
|
||||
// Add views to container view
|
||||
containerView.addSubview(toViewController.view)
|
||||
containerView.addSubview(scalingImage)
|
||||
|
||||
// Animate
|
||||
UIView.animateWithDuration(transitionDuration(transitionContext),
|
||||
delay: 0.0,
|
||||
options: UIViewAnimationOptions.TransitionNone,
|
||||
animations: { () -> Void in
|
||||
// Fade in
|
||||
fromViewController.view.alpha = 0.0
|
||||
toViewController.view.alpha = 1.0
|
||||
|
||||
if destinationImageView.contentMode == .ScaleAspectFit {
|
||||
scalingImage.animaticToScaleAspectFit()
|
||||
} else {
|
||||
scalingImage.animaticToScaleAspectFill()
|
||||
}
|
||||
}, completion: { (finished) -> Void in
|
||||
|
||||
// Finish image scaling and remove image view
|
||||
if destinationImageView.contentMode == .ScaleAspectFit {
|
||||
scalingImage.animateFinishToScaleAspectFit()
|
||||
} else {
|
||||
scalingImage.animateFinishToScaleAspectFill()
|
||||
}
|
||||
scalingImage.removeFromSuperview()
|
||||
|
||||
// Unhide
|
||||
destinationImageView.hidden = false
|
||||
sourceImageView.hidden = false
|
||||
fromViewController.view.alpha = 1.0
|
||||
|
||||
// Finish transition
|
||||
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
|
||||
|
||||
// Enable selection again
|
||||
fromViewController.view?.userInteractionEnabled = true
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Pods/BSImagePicker/Pod/Classes/Extension/NSIndexSet+NSIndexPath.swift
generated
Normal file
42
Pods/BSImagePicker/Pod/Classes/Extension/NSIndexSet+NSIndexPath.swift
generated
Normal file
@ -0,0 +1,42 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 Foundation
|
||||
|
||||
/**
|
||||
Extension for creating index paths from an index set
|
||||
*/
|
||||
extension NSIndexSet {
|
||||
/**
|
||||
- parameter section: The section for the created NSIndexPaths
|
||||
- return: An array with NSIndexPaths
|
||||
*/
|
||||
func bs_indexPathsForSection(section: Int) -> [NSIndexPath] {
|
||||
var indexPaths: [NSIndexPath] = []
|
||||
|
||||
enumerateIndexesUsingBlock { (index, _) -> Void in
|
||||
indexPaths.append(NSIndexPath(forItem: index, inSection: section))
|
||||
}
|
||||
|
||||
return indexPaths
|
||||
}
|
||||
}
|
||||
45
Pods/BSImagePicker/Pod/Classes/Extension/UIButton+NoAnimation.swift
generated
Normal file
45
Pods/BSImagePicker/Pod/Classes/Extension/UIButton+NoAnimation.swift
generated
Normal file
@ -0,0 +1,45 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
Extension on UIButton for settings the title without an animation
|
||||
*/
|
||||
extension UIButton {
|
||||
/**
|
||||
Sets title without an animation
|
||||
- parameter title: The String to use as title
|
||||
- parameter forState: Which state it applies to
|
||||
*/
|
||||
func bs_setTitleWithoutAnimation(title: String?, forState state: UIControlState) {
|
||||
// Disable/enable animations
|
||||
UIView.setAnimationsEnabled(false)
|
||||
|
||||
// Set title without the default animation
|
||||
self.setTitle(title, forState: state)
|
||||
self.layoutIfNeeded()
|
||||
|
||||
// Enable animations
|
||||
UIView.setAnimationsEnabled(true)
|
||||
}
|
||||
}
|
||||
56
Pods/BSImagePicker/Pod/Classes/Extension/UIViewController+BSImagePicker.swift
generated
Normal file
56
Pods/BSImagePicker/Pod/Classes/Extension/UIViewController+BSImagePicker.swift
generated
Normal file
@ -0,0 +1,56 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import Photos
|
||||
|
||||
/**
|
||||
Extension on UIViewController to simply presentation of BSImagePicker
|
||||
*/
|
||||
public extension UIViewController {
|
||||
/**
|
||||
Present a given image picker with closures, any of the closures can be nil.
|
||||
|
||||
- parameter imagePicker: a BSImagePickerViewController to present
|
||||
- parameter animated: To animate the presentation or not
|
||||
- parameter select: Closure to call when user selects an asset or nil
|
||||
- parameter deselect: Closure to call when user deselects an asset or nil
|
||||
- parameter cancel: Closure to call when user cancels or nil
|
||||
- parameter finish: Closure to call when user finishes or nil
|
||||
- parameter completion: presentation completed closure or nil
|
||||
*/
|
||||
func bs_presentImagePickerController(imagePicker: BSImagePickerViewController, animated: Bool, select: ((asset: PHAsset) -> Void)?, deselect: ((asset: PHAsset) -> Void)?, cancel: (([PHAsset]) -> Void)?, finish: (([PHAsset]) -> Void)?, completion: (() -> Void)?) {
|
||||
BSImagePickerViewController.authorize(fromViewController: self) { (authorized) -> Void in
|
||||
// Make sure we are authorized before proceding
|
||||
guard authorized == true else { return }
|
||||
|
||||
// Set blocks
|
||||
imagePicker.photosViewController.selectionClosure = select
|
||||
imagePicker.photosViewController.deselectionClosure = deselect
|
||||
imagePicker.photosViewController.cancelClosure = cancel
|
||||
imagePicker.photosViewController.finishClosure = finish
|
||||
|
||||
// Present
|
||||
self.presentViewController(imagePicker, animated: animated, completion: completion)
|
||||
}
|
||||
}
|
||||
}
|
||||
98
Pods/BSImagePicker/Pod/Classes/Model/AlbumTableViewDataSource.swift
generated
Normal file
98
Pods/BSImagePicker/Pod/Classes/Model/AlbumTableViewDataSource.swift
generated
Normal file
@ -0,0 +1,98 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import Photos
|
||||
|
||||
/**
|
||||
Implements the UITableViewDataSource protocol with a data source and cell factory
|
||||
*/
|
||||
final class AlbumTableViewDataSource : NSObject, UITableViewDataSource {
|
||||
let fetchResults: [PHFetchResult]
|
||||
private let albumCellIdentifier = "albumCell"
|
||||
|
||||
init(fetchResults: [PHFetchResult]) {
|
||||
self.fetchResults = fetchResults
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
||||
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
|
||||
return fetchResults.count
|
||||
}
|
||||
|
||||
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
return fetchResults[section].count
|
||||
}
|
||||
|
||||
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCellWithIdentifier(albumCellIdentifier, forIndexPath: indexPath) as! AlbumCell
|
||||
let cachingManager = PHCachingImageManager.defaultManager() as? PHCachingImageManager
|
||||
cachingManager?.allowsCachingHighQualityImages = false
|
||||
|
||||
// Fetch album
|
||||
if let album = fetchResults[indexPath.section][indexPath.row] as? PHAssetCollection {
|
||||
// Title
|
||||
cell.albumTitleLabel.text = album.localizedTitle
|
||||
|
||||
// Selection style
|
||||
cell.selectionStyle = .None
|
||||
|
||||
let fetchOptions = PHFetchOptions()
|
||||
fetchOptions.sortDescriptors = [
|
||||
NSSortDescriptor(key: "creationDate", ascending: false)
|
||||
]
|
||||
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
|
||||
|
||||
let result = PHAsset.fetchAssetsInAssetCollection(album, options: fetchOptions)
|
||||
result.enumerateObjectsUsingBlock { (object, idx, stop) in
|
||||
if let asset = object as? PHAsset {
|
||||
let imageSize = CGSize(width: 79, height: 79)
|
||||
let imageContentMode: PHImageContentMode = .AspectFill
|
||||
switch idx {
|
||||
case 0:
|
||||
PHCachingImageManager.defaultManager().requestImageForAsset(asset, targetSize: imageSize, contentMode: imageContentMode, options: nil) { (result, _) in
|
||||
cell.firstImageView.image = result
|
||||
cell.secondImageView.image = result
|
||||
cell.thirdImageView.image = result
|
||||
}
|
||||
case 1:
|
||||
PHCachingImageManager.defaultManager().requestImageForAsset(asset, targetSize: imageSize, contentMode: imageContentMode, options: nil) { (result, _) in
|
||||
cell.secondImageView.image = result
|
||||
cell.thirdImageView.image = result
|
||||
}
|
||||
case 2:
|
||||
PHCachingImageManager.defaultManager().requestImageForAsset(asset, targetSize: imageSize, contentMode: imageContentMode, options: nil) { (result, _) in
|
||||
cell.thirdImageView.image = result
|
||||
}
|
||||
|
||||
default:
|
||||
// Stop enumeration
|
||||
stop.initialize(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return cell
|
||||
}
|
||||
}
|
||||
58
Pods/BSImagePicker/Pod/Classes/Model/CameraCollectionViewDataSource.swift
generated
Normal file
58
Pods/BSImagePicker/Pod/Classes/Model/CameraCollectionViewDataSource.swift
generated
Normal file
@ -0,0 +1,58 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
Data source for the camera cell. Will not show up if your device doesn't support camera or you have turned it off in settings
|
||||
*/
|
||||
final class CameraCollectionViewDataSource: NSObject, UICollectionViewDataSource {
|
||||
let cameraCellIdentifier = "cameraCellIdentifier"
|
||||
let cameraAvailable: Bool
|
||||
let settings: BSImagePickerSettings
|
||||
|
||||
init(settings: BSImagePickerSettings, cameraAvailable: Bool) {
|
||||
self.settings = settings
|
||||
self.cameraAvailable = cameraAvailable
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
||||
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
|
||||
return Int(cameraAvailable && settings.takePhotos)
|
||||
}
|
||||
|
||||
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||
return Int(cameraAvailable && settings.takePhotos)
|
||||
}
|
||||
|
||||
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
|
||||
let cameraCell = collectionView.dequeueReusableCellWithReuseIdentifier(cameraCellIdentifier, forIndexPath: indexPath) as! CameraCell
|
||||
cameraCell.takePhotoIcon = settings.takePhotoIcon
|
||||
|
||||
return cameraCell
|
||||
}
|
||||
|
||||
func registerCellIdentifiersForCollectionView(collectionView: UICollectionView?) {
|
||||
collectionView?.registerNib(UINib(nibName: "CameraCell", bundle: BSImagePickerViewController.bundle), forCellWithReuseIdentifier: cameraCellIdentifier)
|
||||
}
|
||||
}
|
||||
48
Pods/BSImagePicker/Pod/Classes/Model/ComposedCollectionViewDataSource.swift
generated
Normal file
48
Pods/BSImagePicker/Pod/Classes/Model/ComposedCollectionViewDataSource.swift
generated
Normal file
@ -0,0 +1,48 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
Takes multiple UICollectionViewDataSources and joins them into one section
|
||||
*/
|
||||
class ComposedCollectionViewDataSource: NSObject, UICollectionViewDataSource {
|
||||
let dataSources: [UICollectionViewDataSource]
|
||||
|
||||
init(dataSources: [UICollectionViewDataSource]) {
|
||||
self.dataSources = dataSources
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
||||
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
|
||||
return dataSources.count
|
||||
}
|
||||
|
||||
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||
return dataSources[section].collectionView(collectionView, numberOfItemsInSection: 0)
|
||||
}
|
||||
|
||||
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
|
||||
return dataSources[indexPath.section].collectionView(collectionView, cellForItemAtIndexPath: NSIndexPath(forItem: indexPath.row, inSection: 0))
|
||||
}
|
||||
}
|
||||
106
Pods/BSImagePicker/Pod/Classes/Model/PhotoCollectionViewDataSource.swift
generated
Normal file
106
Pods/BSImagePicker/Pod/Classes/Model/PhotoCollectionViewDataSource.swift
generated
Normal file
@ -0,0 +1,106 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import Photos
|
||||
|
||||
/**
|
||||
Gives UICollectionViewDataSource functionality with a given data source and cell factory
|
||||
*/
|
||||
final class PhotoCollectionViewDataSource : NSObject, UICollectionViewDataSource {
|
||||
var selections = [PHAsset]()
|
||||
var fetchResult: PHFetchResult
|
||||
|
||||
private let photoCellIdentifier = "photoCellIdentifier"
|
||||
private let photosManager = PHCachingImageManager.defaultManager()
|
||||
private let imageContentMode: PHImageContentMode = .AspectFill
|
||||
|
||||
let settings: BSImagePickerSettings?
|
||||
var imageSize: CGSize = CGSizeZero
|
||||
|
||||
init(fetchResult: PHFetchResult, selections: PHFetchResult? = nil, settings: BSImagePickerSettings?) {
|
||||
self.fetchResult = fetchResult
|
||||
self.settings = settings
|
||||
if let selections = selections {
|
||||
var selectionsArray = [PHAsset]()
|
||||
selections.enumerateObjectsUsingBlock { (asset, idx, stop) -> Void in
|
||||
if let asset = asset as? PHAsset {
|
||||
selectionsArray.append(asset)
|
||||
}
|
||||
}
|
||||
self.selections = selectionsArray
|
||||
}
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
||||
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
|
||||
return 1
|
||||
}
|
||||
|
||||
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||
return fetchResult.count
|
||||
}
|
||||
|
||||
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
|
||||
UIView.setAnimationsEnabled(false)
|
||||
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(photoCellIdentifier, forIndexPath: indexPath) as! PhotoCell
|
||||
if let settings = settings {
|
||||
cell.settings = settings
|
||||
}
|
||||
|
||||
// Cancel any pending image requests
|
||||
if cell.tag != 0 {
|
||||
photosManager.cancelImageRequest(PHImageRequestID(cell.tag))
|
||||
}
|
||||
|
||||
if let asset = fetchResult[indexPath.row] as? PHAsset {
|
||||
cell.asset = asset
|
||||
|
||||
// Request image
|
||||
cell.tag = Int(photosManager.requestImageForAsset(asset, targetSize: imageSize, contentMode: imageContentMode, options: nil) { (result, _) in
|
||||
cell.imageView.image = result
|
||||
})
|
||||
|
||||
// Set selection number
|
||||
if let asset = fetchResult[indexPath.row] as? PHAsset, let index = selections.indexOf(asset) {
|
||||
if let character = settings?.selectionCharacter {
|
||||
cell.selectionString = String(character)
|
||||
} else {
|
||||
cell.selectionString = String(index+1)
|
||||
}
|
||||
|
||||
cell.selected = true
|
||||
} else {
|
||||
cell.selected = false
|
||||
}
|
||||
}
|
||||
|
||||
UIView.setAnimationsEnabled(true)
|
||||
|
||||
return cell
|
||||
}
|
||||
|
||||
func registerCellIdentifiersForCollectionView(collectionView: UICollectionView?) {
|
||||
collectionView?.registerNib(UINib(nibName: "PhotoCell", bundle: BSImagePickerViewController.bundle), forCellWithReuseIdentifier: photoCellIdentifier)
|
||||
}
|
||||
}
|
||||
60
Pods/BSImagePicker/Pod/Classes/Model/Settings.swift
generated
Normal file
60
Pods/BSImagePicker/Pod/Classes/Model/Settings.swift
generated
Normal file
@ -0,0 +1,60 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
The settings object that gets passed around between classes for keeping...settings
|
||||
*/
|
||||
final class Settings : BSImagePickerSettings {
|
||||
var maxNumberOfSelections: Int = Int.max
|
||||
var selectionCharacter: Character? = nil
|
||||
var selectionFillColor: UIColor = UIView().tintColor
|
||||
var selectionStrokeColor: UIColor = UIColor.whiteColor()
|
||||
var selectionShadowColor: UIColor = UIColor.blackColor()
|
||||
var selectionTextAttributes: [String: AnyObject] = {
|
||||
let paragraphStyle = NSMutableParagraphStyle()
|
||||
paragraphStyle.lineBreakMode = .ByTruncatingTail
|
||||
paragraphStyle.alignment = .Center
|
||||
return [
|
||||
NSFontAttributeName: UIFont.boldSystemFontOfSize(10.0),
|
||||
NSParagraphStyleAttributeName: paragraphStyle,
|
||||
NSForegroundColorAttributeName: UIColor.whiteColor()
|
||||
]
|
||||
}()
|
||||
var cellsPerRow: (verticalSize: UIUserInterfaceSizeClass, horizontalSize: UIUserInterfaceSizeClass) -> Int = {(verticalSize: UIUserInterfaceSizeClass, horizontalSize: UIUserInterfaceSizeClass) -> Int in
|
||||
switch (verticalSize, horizontalSize) {
|
||||
case (.Compact, .Regular): // iPhone5-6 portrait
|
||||
return 3
|
||||
case (.Compact, .Compact): // iPhone5-6 landscape
|
||||
return 5
|
||||
case (.Regular, .Regular): // iPad portrait/landscape
|
||||
return 7
|
||||
default:
|
||||
return 3
|
||||
}
|
||||
}
|
||||
|
||||
var takePhotos: Bool = false
|
||||
|
||||
var takePhotoIcon: UIImage? = UIImage(named: "add_photo", inBundle: BSImagePickerViewController.bundle, compatibleWithTraitCollection: nil)
|
||||
}
|
||||
74
Pods/BSImagePicker/Pod/Classes/Protocol/BSImagePickerSettings.swift
generated
Normal file
74
Pods/BSImagePicker/Pod/Classes/Protocol/BSImagePickerSettings.swift
generated
Normal file
@ -0,0 +1,74 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 Photos
|
||||
|
||||
/**
|
||||
BSImagePicker settings. Tweaks these to make BSImagePicker fit your needs
|
||||
*/
|
||||
public protocol BSImagePickerSettings {
|
||||
/**
|
||||
Max number of images user can select
|
||||
*/
|
||||
var maxNumberOfSelections: Int { get set }
|
||||
|
||||
/**
|
||||
Character to use for selection. If nil, selection number will be used
|
||||
*/
|
||||
var selectionCharacter: Character? { get set }
|
||||
|
||||
/**
|
||||
Inner circle color
|
||||
*/
|
||||
var selectionFillColor: UIColor { get set }
|
||||
|
||||
/**
|
||||
Outer circle color
|
||||
*/
|
||||
var selectionStrokeColor: UIColor { get set }
|
||||
|
||||
/**
|
||||
Shadow color
|
||||
*/
|
||||
var selectionShadowColor: UIColor { get set }
|
||||
|
||||
/**
|
||||
Attributes for text inside circle. Color, font, etc
|
||||
*/
|
||||
var selectionTextAttributes: [String: AnyObject] { get set }
|
||||
|
||||
/**
|
||||
Return how many cells per row you want to show for the given size classes
|
||||
*/
|
||||
var cellsPerRow: (verticalSize: UIUserInterfaceSizeClass, horizontalSize: UIUserInterfaceSizeClass) -> Int { get set }
|
||||
|
||||
/**
|
||||
Toggle take photos
|
||||
*/
|
||||
var takePhotos: Bool { get set }
|
||||
|
||||
/**
|
||||
Icon to show in take photo cell.
|
||||
If you use a black image tint color will be applied to it.
|
||||
*/
|
||||
var takePhotoIcon: UIImage? { get set }
|
||||
}
|
||||
56
Pods/BSImagePicker/Pod/Classes/View/AlbumCell.swift
generated
Normal file
56
Pods/BSImagePicker/Pod/Classes/View/AlbumCell.swift
generated
Normal file
@ -0,0 +1,56 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
Cell for photo albums in the albums drop down menu
|
||||
*/
|
||||
final class AlbumCell: UITableViewCell {
|
||||
@IBOutlet weak var firstImageView: UIImageView!
|
||||
@IBOutlet weak var secondImageView: UIImageView!
|
||||
@IBOutlet weak var thirdImageView: UIImageView!
|
||||
@IBOutlet weak var albumTitleLabel: UILabel!
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
|
||||
// Add a little shadow to images views
|
||||
for imageView in [firstImageView, secondImageView, thirdImageView] {
|
||||
imageView.layer.shadowColor = UIColor.whiteColor().CGColor
|
||||
imageView.layer.shadowRadius = 1.0
|
||||
imageView.layer.shadowOffset = CGSize(width: 0.5, height: -0.5)
|
||||
imageView.layer.shadowOpacity = 1.0
|
||||
}
|
||||
}
|
||||
|
||||
override var selected: Bool {
|
||||
didSet {
|
||||
// Selection checkmark
|
||||
if selected == true {
|
||||
accessoryType = .Checkmark
|
||||
} else {
|
||||
accessoryType = .None
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
72
Pods/BSImagePicker/Pod/Classes/View/AlbumTitleView.swift
generated
Normal file
72
Pods/BSImagePicker/Pod/Classes/View/AlbumTitleView.swift
generated
Normal file
@ -0,0 +1,72 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
The navigation title view with album name and a button for activating the drop down.
|
||||
*/
|
||||
final class AlbumTitleView: UIView {
|
||||
@IBOutlet weak var albumButton: UIButton!
|
||||
|
||||
private var context = 0
|
||||
|
||||
var albumTitle = "" {
|
||||
didSet {
|
||||
if let imageView = self.albumButton?.imageView, let titleLabel = self.albumButton?.titleLabel {
|
||||
// Set title on button
|
||||
albumButton?.setTitle(self.albumTitle, forState: .Normal)
|
||||
|
||||
// Also set title directly to label, since it isn't done right away when setting button title
|
||||
// And we need to know its width to calculate insets
|
||||
titleLabel.text = self.albumTitle
|
||||
titleLabel.sizeToFit()
|
||||
|
||||
// Adjust insets to right align image
|
||||
albumButton?.titleEdgeInsets = UIEdgeInsets(top: 0, left: -imageView.bounds.size.width, bottom: 0, right: imageView.bounds.size.width)
|
||||
albumButton?.imageEdgeInsets = UIEdgeInsets(top: 0, left: titleLabel.bounds.size.width + 4, bottom: 0, right: -(titleLabel.bounds.size.width + 4))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
|
||||
// Set image
|
||||
albumButton?.setImage(arrowDownImage, forState: .Normal)
|
||||
}
|
||||
|
||||
lazy var arrowDownImage: UIImage? = {
|
||||
// Get path for BSImagePicker bundle
|
||||
let bundlePath = NSBundle(forClass: PhotosViewController.self).pathForResource("BSImagePicker", ofType: "bundle")
|
||||
let bundle: NSBundle?
|
||||
|
||||
// Load bundle
|
||||
if let bundlePath = bundlePath {
|
||||
bundle = NSBundle(path: bundlePath)
|
||||
} else {
|
||||
bundle = nil
|
||||
}
|
||||
|
||||
return UIImage(named: "arrow_down", inBundle: bundle, compatibleWithTraitCollection: nil)
|
||||
}()
|
||||
}
|
||||
78
Pods/BSImagePicker/Pod/Classes/View/CameraCell.swift
generated
Normal file
78
Pods/BSImagePicker/Pod/Classes/View/CameraCell.swift
generated
Normal file
@ -0,0 +1,78 @@
|
||||
//
|
||||
// CameraCell.swift
|
||||
// Pods
|
||||
//
|
||||
// Created by Joakim Gyllström on 2015-09-26.
|
||||
//
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import AVFoundation
|
||||
|
||||
/**
|
||||
*/
|
||||
final class CameraCell: UICollectionViewCell {
|
||||
@IBOutlet weak var imageView: UIImageView!
|
||||
@IBOutlet weak var cameraBackground: UIView!
|
||||
var takePhotoIcon: UIImage? {
|
||||
didSet {
|
||||
imageView.image = takePhotoIcon
|
||||
|
||||
// Apply tint to image
|
||||
imageView.image = imageView.image?.imageWithRenderingMode(.AlwaysTemplate)
|
||||
}
|
||||
}
|
||||
|
||||
var session: AVCaptureSession?
|
||||
var captureLayer: AVCaptureVideoPreviewLayer?
|
||||
let sessionQueue = dispatch_queue_create("AVCaptureVideoPreviewLayer", nil)
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
|
||||
// Don't trigger camera access for the background
|
||||
guard AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == .Authorized else {
|
||||
return
|
||||
}
|
||||
|
||||
do {
|
||||
// Prepare avcapture session
|
||||
session = AVCaptureSession()
|
||||
session?.sessionPreset = AVCaptureSessionPresetMedium
|
||||
|
||||
// Hook upp device
|
||||
let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
|
||||
let input = try AVCaptureDeviceInput(device: device)
|
||||
session?.addInput(input)
|
||||
|
||||
// Setup capture layer
|
||||
if let captureLayer = AVCaptureVideoPreviewLayer(session: session) {
|
||||
captureLayer.frame = bounds
|
||||
captureLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
|
||||
cameraBackground.layer.addSublayer(captureLayer)
|
||||
|
||||
self.captureLayer = captureLayer
|
||||
}
|
||||
} catch {
|
||||
session = nil
|
||||
}
|
||||
}
|
||||
|
||||
override func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
|
||||
captureLayer?.frame = bounds
|
||||
}
|
||||
|
||||
func startLiveBackground() {
|
||||
dispatch_async(sessionQueue) { () -> Void in
|
||||
self.session?.startRunning()
|
||||
}
|
||||
}
|
||||
|
||||
func stopLiveBackground() {
|
||||
dispatch_async(sessionQueue) { () -> Void in
|
||||
self.session?.stopRunning()
|
||||
}
|
||||
}
|
||||
}
|
||||
91
Pods/BSImagePicker/Pod/Classes/View/PhotoCell.swift
generated
Normal file
91
Pods/BSImagePicker/Pod/Classes/View/PhotoCell.swift
generated
Normal file
@ -0,0 +1,91 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
import Photos
|
||||
|
||||
/**
|
||||
The photo cell.
|
||||
*/
|
||||
final class PhotoCell: UICollectionViewCell {
|
||||
@IBOutlet weak var imageView: UIImageView!
|
||||
@IBOutlet weak var selectionOverlayView: UIView!
|
||||
@IBOutlet weak var selectionView: SelectionView!
|
||||
|
||||
weak var asset: PHAsset?
|
||||
var settings: BSImagePickerSettings {
|
||||
get {
|
||||
return selectionView.settings
|
||||
}
|
||||
set {
|
||||
selectionView.settings = newValue
|
||||
}
|
||||
}
|
||||
|
||||
var selectionString: String {
|
||||
get {
|
||||
return selectionView.selectionString
|
||||
}
|
||||
|
||||
set {
|
||||
selectionView.selectionString = newValue
|
||||
}
|
||||
}
|
||||
|
||||
override var selected: Bool {
|
||||
get {
|
||||
return super.selected
|
||||
}
|
||||
|
||||
set {
|
||||
let hasChanged = selected != newValue
|
||||
super.selected = newValue
|
||||
|
||||
if UIView.areAnimationsEnabled() && hasChanged {
|
||||
UIView.animateWithDuration(NSTimeInterval(0.1), animations: { () -> Void in
|
||||
// Set alpha for views
|
||||
self.updateAlpha(newValue)
|
||||
|
||||
// Scale all views down a little
|
||||
self.transform = CGAffineTransformMakeScale(0.95, 0.95)
|
||||
}) { (finished: Bool) -> Void in
|
||||
UIView.animateWithDuration(NSTimeInterval(0.1), animations: { () -> Void in
|
||||
// And then scale them back upp again to give a bounce effect
|
||||
self.transform = CGAffineTransformMakeScale(1.0, 1.0)
|
||||
}, completion: nil)
|
||||
}
|
||||
} else {
|
||||
updateAlpha(newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func updateAlpha(selected: Bool) {
|
||||
if selected == true {
|
||||
self.selectionView.alpha = 1.0
|
||||
self.selectionOverlayView.alpha = 0.3
|
||||
} else {
|
||||
self.selectionView.alpha = 0.0
|
||||
self.selectionOverlayView.alpha = 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
90
Pods/BSImagePicker/Pod/Classes/View/SelectionView.swift
generated
Normal file
90
Pods/BSImagePicker/Pod/Classes/View/SelectionView.swift
generated
Normal file
@ -0,0 +1,90 @@
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2015 Joakim Gyllström
|
||||
//
|
||||
// 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 UIKit
|
||||
|
||||
/**
|
||||
Used as an overlay on selected cells
|
||||
*/
|
||||
@IBDesignable final class SelectionView: UIView {
|
||||
var selectionString: String = "" {
|
||||
didSet {
|
||||
if selectionString != oldValue {
|
||||
setNeedsDisplay()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var settings: BSImagePickerSettings = Settings()
|
||||
|
||||
override func drawRect(rect: CGRect) {
|
||||
//// General Declarations
|
||||
let context = UIGraphicsGetCurrentContext()
|
||||
|
||||
//// Color Declarations
|
||||
|
||||
//// Shadow Declarations
|
||||
let shadow2Offset = CGSize(width: 0.1, height: -0.1);
|
||||
let shadow2BlurRadius: CGFloat = 2.5;
|
||||
|
||||
//// Frames
|
||||
let checkmarkFrame = bounds;
|
||||
|
||||
//// Subframes
|
||||
let group = CGRect(x: CGRectGetMinX(checkmarkFrame) + 3, y: CGRectGetMinY(checkmarkFrame) + 3, width: CGRectGetWidth(checkmarkFrame) - 6, height: CGRectGetHeight(checkmarkFrame) - 6)
|
||||
|
||||
//// CheckedOval Drawing
|
||||
let checkedOvalPath = UIBezierPath(ovalInRect: CGRectMake(CGRectGetMinX(group) + floor(CGRectGetWidth(group) * 0.0 + 0.5), CGRectGetMinY(group) + floor(CGRectGetHeight(group) * 0.0 + 0.5), floor(CGRectGetWidth(group) * 1.0 + 0.5) - floor(CGRectGetWidth(group) * 0.0 + 0.5), floor(CGRectGetHeight(group) * 1.0 + 0.5) - floor(CGRectGetHeight(group) * 0.0 + 0.5)))
|
||||
CGContextSaveGState(context)
|
||||
CGContextSetShadowWithColor(context, shadow2Offset, shadow2BlurRadius, settings.selectionShadowColor.CGColor)
|
||||
settings.selectionFillColor.setFill()
|
||||
checkedOvalPath.fill()
|
||||
CGContextRestoreGState(context)
|
||||
|
||||
settings.selectionStrokeColor.setStroke()
|
||||
checkedOvalPath.lineWidth = 1
|
||||
checkedOvalPath.stroke()
|
||||
|
||||
|
||||
CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor)
|
||||
|
||||
//// Check mark for single assets
|
||||
if (settings.maxNumberOfSelections == 1) {
|
||||
CGContextSetStrokeColorWithColor(context, UIColor.whiteColor().CGColor)
|
||||
|
||||
let checkPath = UIBezierPath()
|
||||
checkPath.moveToPoint(CGPoint(x: 7, y: 12.5))
|
||||
checkPath.addLineToPoint(CGPoint(x: 11, y: 16))
|
||||
checkPath.addLineToPoint(CGPoint(x: 17.5, y: 9.5))
|
||||
checkPath.stroke()
|
||||
return;
|
||||
}
|
||||
|
||||
//// Bezier Drawing (Picture Number)
|
||||
let size = selectionString.sizeWithAttributes(settings.selectionTextAttributes)
|
||||
|
||||
selectionString.drawInRect(CGRectMake(CGRectGetMidX(checkmarkFrame) - size.width / 2.0,
|
||||
CGRectGetMidY(checkmarkFrame) - size.height / 2.0,
|
||||
size.width,
|
||||
size.height), withAttributes: settings.selectionTextAttributes)
|
||||
}
|
||||
}
|
||||
70
Pods/BSImagePicker/README.md
generated
Normal file
70
Pods/BSImagePicker/README.md
generated
Normal file
@ -0,0 +1,70 @@
|
||||
# BSImagePicker
|
||||
[](https://travis-ci.org/mikaoj/BSImagePicker)
|
||||
[](http://cocoapods.org/pods/BSImagePicker)
|
||||
[](http://cocoapods.org/pods/BSImagePicker)
|
||||
[](http://cocoapods.org/pods/BSImagePicker)
|
||||
[](https://github.com/Carthage/Carthage)
|
||||
|
||||

|
||||
|
||||
A mix between the native iOS 8 gallery and facebooks image picker. It is intended as a replacement for UIImagePickerController for both selecting and taking photos.
|
||||
|
||||
## Usage
|
||||
|
||||
To run the example project, clone the repo, and run `pod install` from the Example directory first.<br />
|
||||
To use it in you own project
|
||||
###### Swift
|
||||
```swift
|
||||
let vc = BSImagePickerViewController()
|
||||
|
||||
bs_presentImagePickerController(vc, animated: true,
|
||||
select: { (asset: PHAsset) -> Void in
|
||||
// User selected an asset.
|
||||
// Do something with it, start upload perhaps?
|
||||
}, deselect: { (asset: PHAsset) -> Void in
|
||||
// User deselected an assets.
|
||||
// Do something, cancel upload?
|
||||
}, cancel: { (assets: [PHAsset]) -> Void in
|
||||
// User cancelled. And this where the assets currently selected.
|
||||
}, finish: { (assets: [PHAsset]) -> Void in
|
||||
// User finished with these assets
|
||||
}, completion: nil)
|
||||
```
|
||||
## Features
|
||||
* Multiple selection.
|
||||
* Fullscreen preview
|
||||
* Switch albums.
|
||||
* No localization needed (uses icons or system localizations).
|
||||
* Take photos (it isn't enabled by default, so set takePhotos to true if you want it).
|
||||
* Customizable - check out BSImagePickerSettings to see what you can tweak.
|
||||
|
||||
## Customization
|
||||
|
||||
You have access to the cancel, album and done button. Customize them as you would with any other UIBarButtonItem (cancel & finish) or UIButton (album).<br />
|
||||
There are also a few other settings you can tweak. They are documented in BSImagePickerSettings.<br />
|
||||
[Documentation @ cocoadocs](http://cocoadocs.org/docsets/BSImagePicker/)
|
||||
|
||||
## Custom fetch results
|
||||
|
||||
Not happy with the fetch results (camera roll and albums) that BSImagePicker uses as default? Set the fetchResults property.
|
||||
|
||||
## Requirements
|
||||
|
||||
iOS 8
|
||||
|
||||
## Installation
|
||||
|
||||
BSImagePicker is available through [CocoaPods](http://cocoapods.org). To install
|
||||
it, simply add the following line to your Podfile:
|
||||
|
||||
```ruby
|
||||
pod "BSImagePicker", "~> 2.3"
|
||||
```
|
||||
|
||||
## Author
|
||||
|
||||
Joakim Gyllström, joakim@backslashed.se
|
||||
|
||||
## License
|
||||
|
||||
BSImagePicker is available under the MIT license. See the LICENSE file for more info.
|
||||
14
Pods/Manifest.lock
generated
14
Pods/Manifest.lock
generated
@ -33,6 +33,10 @@ PODS:
|
||||
- Bolts/AppLinks (1.7.0):
|
||||
- Bolts/Tasks
|
||||
- Bolts/Tasks (1.7.0)
|
||||
- BSGridCollectionViewLayout (1.1.1)
|
||||
- BSImagePicker (2.3.0):
|
||||
- BSGridCollectionViewLayout (~> 1.1)
|
||||
- UIImageViewModeScaleAspect (~> 1.3)
|
||||
- FBSDKCoreKit (4.12.0):
|
||||
- Bolts (~> 1.7)
|
||||
- FBSDKLoginKit (4.12.0):
|
||||
@ -90,11 +94,14 @@ PODS:
|
||||
- PicoKit/Soap
|
||||
- PicoKit/XMLWriter (0.7.2)
|
||||
- SwiftyJSON (2.3.2)
|
||||
- SWRevealViewController (2.3.0)
|
||||
- TYMActivityIndicatorView (0.3.3)
|
||||
- UIImageViewModeScaleAspect (1.3)
|
||||
|
||||
DEPENDENCIES:
|
||||
- AeroGearOAuth2
|
||||
- Alamofire-SwiftyJSON
|
||||
- BSImagePicker (~> 2.3)
|
||||
- FBSDKCoreKit
|
||||
- FBSDKLoginKit
|
||||
- FBSDKShareKit
|
||||
@ -105,6 +112,7 @@ DEPENDENCIES:
|
||||
- Locksmith
|
||||
- OAuthSwift (~> 0.5.0)
|
||||
- PicoKit
|
||||
- SWRevealViewController
|
||||
- TYMActivityIndicatorView
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
@ -114,6 +122,8 @@ SPEC CHECKSUMS:
|
||||
Alamofire: c19a627cefd6a95f840401c49ab1f124e07f54ee
|
||||
Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98
|
||||
Bolts: a0058fa3b331c5a1e4402d534f2dae36dbff31e4
|
||||
BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3
|
||||
BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18
|
||||
FBSDKCoreKit: 6e56d5a2a64a755ad4efb5dbeee8f82fb1b99775
|
||||
FBSDKLoginKit: 03f68a8d48c2c8bb81d7eb8097973d483543e1f6
|
||||
FBSDKShareKit: df1491f064cffc8ebcc3fc8b71be94cc190c728e
|
||||
@ -132,8 +142,10 @@ SPEC CHECKSUMS:
|
||||
OAuthSwift: 1ef042d4362e755e24a78f158d817245641a5d24
|
||||
PicoKit: 9079bce659a8d5408c8af1c45254b971df614de3
|
||||
SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a
|
||||
SWRevealViewController: 6d3fd97f70112fd7cef9de14df4260eacce4c63a
|
||||
TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b
|
||||
UIImageViewModeScaleAspect: ec78901acfc20d3782154111a21d34390f8f71ad
|
||||
|
||||
PODFILE CHECKSUM: 4b7ee6fd372620e6f0ce654e3c9ceec07ad55669
|
||||
PODFILE CHECKSUM: b372ee48d5c7639810a0074e34292bc3076ff7f0
|
||||
|
||||
COCOAPODS: 1.0.0
|
||||
|
||||
6896
Pods/Pods.xcodeproj/project.pbxproj
generated
6896
Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/BSGridCollectionViewLayout.xcscheme
generated
Normal file
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/BSGridCollectionViewLayout.xcscheme
generated
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForAnalyzing = "YES"
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = '8AA3DDB8797222294E1288CB197A8347'
|
||||
BlueprintName = 'BSGridCollectionViewLayout'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'BSGridCollectionViewLayout.framework'>
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
buildConfiguration = "Debug"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/BSImagePicker-BSImagePicker.xcscheme
generated
Normal file
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/BSImagePicker-BSImagePicker.xcscheme
generated
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForAnalyzing = "YES"
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = 'F7DE5171AA3C53DA4E4A078B795C78EE'
|
||||
BlueprintName = 'BSImagePicker-BSImagePicker'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'BSImagePicker.bundle'>
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
buildConfiguration = "Debug"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/BSImagePicker.xcscheme
generated
Normal file
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/BSImagePicker.xcscheme
generated
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForAnalyzing = "YES"
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = 'C59EE95662AD4757E7FCE220DB1AFA41'
|
||||
BlueprintName = 'BSImagePicker'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'BSImagePicker.framework'>
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
buildConfiguration = "Debug"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@ -14,7 +14,7 @@
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9C2A95ACEDED78B3E880CC29AA0AF79D"
|
||||
BlueprintIdentifier = "9AAFED731A7D62458AD19F177724048B"
|
||||
BuildableName = "Pods_Vendoo.framework"
|
||||
BlueprintName = "Pods-Vendoo"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
@ -45,7 +45,7 @@
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9C2A95ACEDED78B3E880CC29AA0AF79D"
|
||||
BlueprintIdentifier = "9AAFED731A7D62458AD19F177724048B"
|
||||
BuildableName = "Pods_Vendoo.framework"
|
||||
BlueprintName = "Pods-Vendoo"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
|
||||
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/SWRevealViewController.xcscheme
generated
Normal file
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/SWRevealViewController.xcscheme
generated
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForAnalyzing = "YES"
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = '0D52FE07CEB8B5458F3C73BB37A484FB'
|
||||
BlueprintName = 'SWRevealViewController'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'SWRevealViewController.framework'>
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
buildConfiguration = "Debug"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@ -14,7 +14,7 @@
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = '0B68DE0F8EFE4B4B7B829F7B37E213F0'
|
||||
BlueprintIdentifier = '31CABCBBC4853F0A3523D99FE6D41F17'
|
||||
BlueprintName = 'TYMActivityIndicatorView'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'TYMActivityIndicatorView.framework'>
|
||||
|
||||
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/UIImageViewModeScaleAspect.xcscheme
generated
Normal file
60
Pods/Pods.xcodeproj/xcuserdata/okechi.xcuserdatad/xcschemes/UIImageViewModeScaleAspect.xcscheme
generated
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForAnalyzing = "YES"
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = '0FF38C485BD8E73F614C919F834D6EAB'
|
||||
BlueprintName = 'UIImageViewModeScaleAspect'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'UIImageViewModeScaleAspect.framework'>
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
buildConfiguration = "Debug"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@ -29,6 +29,21 @@
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>BSGridCollectionViewLayout.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>BSImagePicker-BSImagePicker.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>BSImagePicker.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Bolts.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
@ -84,6 +99,11 @@
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>SWRevealViewController.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>SwiftyJSON.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
@ -94,10 +114,15 @@
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>UIImageViewModeScaleAspect.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>0B68DE0F8EFE4B4B7B829F7B37E213F0</key>
|
||||
<key>0D52FE07CEB8B5458F3C73BB37A484FB</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
@ -107,6 +132,11 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>0FF38C485BD8E73F614C919F834D6EAB</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>2AA2F4091B94E46EEE3AD6055CB49C7D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
@ -117,6 +147,11 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>31CABCBBC4853F0A3523D99FE6D41F17</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>3C34098A7DACA89F52BF902062730F50</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
@ -157,6 +192,11 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>8AA3DDB8797222294E1288CB197A8347</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>8E87CBA9EBF6671AAFD3A8CCD2C3875B</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
@ -167,7 +207,7 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>9C2A95ACEDED78B3E880CC29AA0AF79D</key>
|
||||
<key>9AAFED731A7D62458AD19F177724048B</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
@ -187,6 +227,16 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>C59EE95662AD4757E7FCE220DB1AFA41</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>F7DE5171AA3C53DA4E4A078B795C78EE</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
21
Pods/SWRevealViewController/LICENSE.txt
generated
Executable file
21
Pods/SWRevealViewController/LICENSE.txt
generated
Executable file
@ -0,0 +1,21 @@
|
||||
Copyright (c) 2013 Joan Lluch <joan.lluch@sweetwilliamsl.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.
|
||||
|
||||
Early code inspired on a similar class by Philip Kluz (Philip.Kluz@zuui.org)
|
||||
167
Pods/SWRevealViewController/README.md
generated
Normal file
167
Pods/SWRevealViewController/README.md
generated
Normal file
@ -0,0 +1,167 @@
|
||||
# SWRevealViewController
|
||||
|
||||
A UIViewController subclass for revealing a rear (left and/or right) view controller behind a front controller, inspired by the Facebook app, done right!
|
||||
|
||||
|
||||
## NOTE ( Version 2.3)
|
||||
|
||||
* This version fixes an old bug that caused an incorrect initialization of the class on particular scenarios.
|
||||
* The old RevealControllerStoryboardExample has been removed from the report as it was deprecated, please look at the newest RevealControllerStoryboardExample2 instead.
|
||||
|
||||
|
||||
## NOTE ( Upgrading to Version 2.1)
|
||||
|
||||
This version incorporates a new approach to Story Boards support.
|
||||
|
||||
* There are now two different segue classes, SWRevealViewControllerSegueSetController and SWRevealViewControllerSeguePushController. The first one is meant to set the revealViewController with the initial controllers from the story board. The second one is used to push controllers to the front with animation. The former SWRevealViewControllerSegue still works but it has been deprecated.
|
||||
* A new StoryBoard example, RevealControllerStoryBoardExample2, has been added to demonstrate the use of the new segue classes. More responsability has been moved to the Story Board design while simplifying the SWRevealViewController implementation.
|
||||
|
||||
## IMPORTANT NOTE: (Upgrading to Version 2.0)
|
||||
|
||||
A number of changes have been made on version 2.0 that may break your existing project. In case you are not ready to upgrade you can continue using previous versions. The last commit before 2.0.0 was tagged v1.1.3. The important changes that affect 2.0.0 are described next.
|
||||
|
||||
* Dropped support for iOS6 and earlier. This version will only work on iOS7
|
||||
|
||||
* The method `setFrontViewController:animated:` does no longer behave as previously. Particularly, it does not perform a full reveal animation. Instead it just replaces the frontViewController at its current position with optional animation. Use the new `pushFrontViewController:animated:` method as a replacement for your previous calls to `setFrontViewController:animated:`.
|
||||
|
||||
* Added support for animated replacement of child controllers. The methods `setRearViewController`, `setFrontViewController`, `setRightViewController` now all have animated versions. The default animation is a Cross Dissolve effect. You can set the duration of the view controller replacement animation with `replaceViewAnimationDuration`
|
||||
|
||||
* You can create custom viewController transition animations by providing an object implementing the `UIViewControllerAnimatedTransitioning` protocol.
|
||||
|
||||
* Added the following new delegate methods
|
||||
```
|
||||
- (void)revealController:(SWRevealViewController *)revealController willAddViewController:(UIViewController *)viewController forOperation:(SWRevealControllerOperation)operation animated:(BOOL)animated;
|
||||
- (void)revealController:(SWRevealViewController *)revealController didAddViewController:(UIViewController *)viewController forOperation:(SWRevealControllerOperation)operation animated:(BOOL)animated;
|
||||
- (id<UIViewControllerAnimatedTransitioning>)revealController:(SWRevealViewController *)revealController animationControllerForOperation:(SWRevealControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC;
|
||||
```
|
||||
|
||||
* The examples have been updated to demonstrate the new features. All animated calls to `setFrontViewController:animated:` have been replaced by calls to `pushFrontViewController:animated:`. The RevealControllerProject example implements a custom Animation Controller (`UIViewControllerAnimatedTransitioning`) to perform a slide up transition on replacement of the rightViewController. The RevealControllerProject3 example uses the default Cross Dissolve animation to set the Front Controller.
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
* A Reveal view controller implemented using view controller containment.
|
||||
* Support for custom viewController transition animations through UIViewControllerAnimatedTransitioning protocol
|
||||
* API easier than a UINavigationController.
|
||||
* Support for any combination of left/right rear controllers.
|
||||
* Correct handling of appearance methods on its child controllers that you can rely on.
|
||||
* Correct handling of rotations.
|
||||
* Can be embedded as a child view controller of other controllers or deployed as the rootViewController.
|
||||
* Plays nicely with any child view controllers or parent controllers.
|
||||
* Can be deployed as a child of itself to create cascade-like, hierarchical interfaces.
|
||||
* Seamless integration of pan gesture recognizer, behaving as smooth as silk.
|
||||
* A category method on UIViewController, `revealViewController`, to get the parent `SWRevealViewController` of any child controller, similar to the UIViewController's property `navigationController`.
|
||||
* Comprehensive set of delegate methods for getting full state of the controller and implementing your own code hooks for customizing behavior.
|
||||
* Lightweight, clean, easy-to-read, self-documenting code that you will enjoy using in your projects.
|
||||
|
||||
## YouTube Video
|
||||
|
||||
[http://youtu.be/8qYxGRJ3ZdA](http://youtu.be/8qYxGRJ3ZdA)
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
The repo includes the following example projects that can be used as templates or for testing purposes
|
||||
* RevealControllerProject.xcodeproj
|
||||
* RevealControllerProject2.xcodeproj
|
||||
* RevealControllerProject3.xcodeproj
|
||||
* RevealControllerStoryboardExample.xcodeproj
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Requirements
|
||||
|
||||
* iOS 7.0 or later.
|
||||
* ARC memory management.
|
||||
|
||||
## Usage
|
||||
|
||||
The SWRevealViewController repository attempts to provide an updated cocoaPods file and consistent tag versioning, but it is not actively updated on the cocoapods-specs repository.
|
||||
|
||||
The easiest way to install it is by copying the following to your project:
|
||||
* SWRevealViewController.h
|
||||
* SWRevealViewController.m
|
||||
|
||||
On your project:
|
||||
* Initialize an instance of a SWRevealViewController passing in a "rear" and a "front" view controllers.
|
||||
* Optionaly add a "right" view controller or pass nil as the "rear" view controller.
|
||||
* Use the SWRevealViewController instance in your code as you would use any view controller.
|
||||
* Deploy as the application window rootViewController, or as a child of other containment controllers.
|
||||
* Get the panGestureRecognized and tapGestureRecognizer provided by the SWRevealViewController. You can leave them as they are for the default behavior or you can add them to a suitable view on your "front" view controller. For example add the panGestureRecognizer to a navigationBar on the viewDidLoad method of your front controller.
|
||||
* At any time, you can reveal, conceal the "rear" or "right" views or replace any of the view controllers, programmatically or based on user actions, with or without animations enabled
|
||||
|
||||
## Basic API Description
|
||||
|
||||
Initializing a SWRevealViewController:
|
||||
|
||||
- (id)initWithRearViewController:(UIViewController *)rearViewController frontViewController:(UIViewController *)frontViewController;
|
||||
|
||||
Setting a right view controller:
|
||||
|
||||
@property (strong, nonatomic) UIViewController *rightViewController;
|
||||
|
||||
Animated setting of the front view controller:
|
||||
|
||||
- (void)pushFrontViewController:(UIViewController *)frontViewController animated:(BOOL)animated;
|
||||
|
||||
Animating the position of the front view controller. Position can be: `FrontViewPositionLeftSideMostRemoved`, `FrontViewPositionLeftSideMost`, `FrontViewPositionLeftSide`, `FrontViewPositionLeft`, `FrontViewPositionRight`, `FrontViewPositionRightMost` or `FrontViewPositionRightMostRemoved`
|
||||
|
||||
- (void)setFrontViewPosition:(FrontViewPosition)frontViewPosition animated:(BOOL)animated;
|
||||
|
||||
Creating and obtaining a pan gesture recognizer:
|
||||
|
||||
- (UIPanGestureRecognizer*)panGestureRecognizer;
|
||||
|
||||
Creating and obtaining a tap gesture recognizer:
|
||||
|
||||
- (UITapGestureRecognizer*)tapGestureRecognizer;
|
||||
|
||||
Other methods are documented in the SWRevealViewController.h header file.
|
||||
|
||||
## Release Notes
|
||||
|
||||
As of November 15, 2013 Release Notes are updated on the class main header file. Please see `SWRevealViewController.h`
|
||||
|
||||
## Tutorials
|
||||
|
||||
* Some time ago the guys at AppCoda published an online tutorial featuring the SWRevealViewController: "How To Add a Slide-out Sidebar Menu in Your Apps" (thanks for that). You will find it at http://www.appcoda.com/ios-programming-sidebar-navigation-menu/ . Not updated to the last SWRevealViewController version but still worth a read.
|
||||
|
||||
* Tammy Coron on Ray Wenderlich blog made an excelent tutorial on "how to build a slide-out navigation panel". She recomends the SWRevealViewController in case you do not want to implement one yourself. http://www.raywenderlich.com/32054/how-to-create-a-slide-out-navigation-like-facebook-and-path
|
||||
|
||||
* You can also check "Drawer View iOS App with SWRevealViewController" at http://bcdilumonline.blogspot.com.es/2014/03/drawer-view-ios-app-with.html for step by step instructions on how to install and use the controller. Worth a read for those who do not quite feel at home with storyboards :-)
|
||||
|
||||
* I also found this one in Spanish "Sidebar o menú lateral mediante SWRevealViewController" by wikimovil.es at http://wikimovil.es/sidebar-o-menu-lateral-mediante-swrevealviewcontroller-parte-1/ which is doing a good job with detailed explanations on how to implement it using Story Boards (before V2.1)
|
||||
|
||||
## Xamarin Binding
|
||||
|
||||
Thanks to Jesper Vandborg for having contributed with a Xamarin Binding project for this controller that is available for download at https://github.com/Vandborg/SWRevealViewController-XamarinBinding.
|
||||
|
||||
## Special Mentions
|
||||
|
||||
A Special Thank you to Joan Martin who formely worked at http://www.sweetwilliamsl.com and has recently been developing an app for http://www.citizen.tv. He had the original idea and implemented code for generic view deployment/undeployment and replacement of view controllers used in the class.
|
||||
|
||||
Early code and api was inspired on a similar class by Philip Kluz (Philip.Kluz@zuui.org)
|
||||
|
||||
## License
|
||||
|
||||
Copyright (c) 2013 Joan Lluch <joan.lluch@sweetwilliamsl.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.
|
||||
418
Pods/SWRevealViewController/SWRevealViewController/SWRevealViewController.h
generated
Executable file
418
Pods/SWRevealViewController/SWRevealViewController/SWRevealViewController.h
generated
Executable file
@ -0,0 +1,418 @@
|
||||
/*
|
||||
|
||||
Copyright (c) 2013 Joan Lluch <joan.lluch@sweetwilliamsl.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.
|
||||
|
||||
Early code inspired on a similar class by Philip Kluz (Philip.Kluz@zuui.org)
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
RELEASE NOTES
|
||||
|
||||
|
||||
Version 2.3.0 (Current Version)
|
||||
|
||||
- StoryBoard initializing bug fix
|
||||
- Minor Code refactoring
|
||||
|
||||
Version 2.2.0
|
||||
|
||||
- State Restoration support.
|
||||
- Reverted panGestureRecognizer implementation to before v2.1.0 (works better).
|
||||
- New properties 'toggleAnimationType', 'springDampingRatio'. Default reveal animation is 'Spring'
|
||||
- New property 'frontViewShadowColor'
|
||||
- New properties 'clipsViewsToBounds' and '_extendedPointInsideHit'
|
||||
- New delegate methods for finer control of front view location in the overdraw area, as long as deprecation note on former delegate methods
|
||||
- Other minor changes that should not affect current implementations
|
||||
|
||||
Version 2.1.0
|
||||
|
||||
- Removed SWDirectionPanGestureRecognizer. Horizontal panning is filtered on the shouldBegin delegate. This is cleaner, I hope it does not break previous funcionality
|
||||
- Took a cleaner approach to storyboard support. SWRevealViewControllerSegue is now deprecated and you should use SWRevealViewControllerSegueSetController and SWRevealViewControllerSeguePushController instead.
|
||||
- A minor change on the autoresizingMask of the internal views to fix a glitch on iOS8. This should not affect iOS7
|
||||
|
||||
Version 2.0.2
|
||||
|
||||
- Added new delegates for better control of gesture recognizers
|
||||
|
||||
Version 2.0.1
|
||||
|
||||
- Fix: draggableBorderWidth now correctly handles the cases where one of the rear controllers is not provided
|
||||
- Fix: the shadow related properties are now granted at any time after view load, not just after initialization.
|
||||
|
||||
Version 2.0.0
|
||||
|
||||
- Dropped support for iOS6 and earlier. This version will only work on iOS7
|
||||
|
||||
- The method setFrontViewController:animated: does not longer perform a full reveal animation. Instead it just replaces the frontViewController in
|
||||
its current position. Use the new pushFrontViewController:animated: method to perform a replacement of the front controlles with reveal animation
|
||||
as in the previous version
|
||||
|
||||
IMPORTANT: You must replace all calls to setFrontViewController:animated by calls to pushFrontViewController:animated to prevent breaking
|
||||
functionality on existing projects.
|
||||
|
||||
- Added support for animated replacement of child controllers: setRearViewController, setFrontViewController, setRightViewController now have animated versions.
|
||||
|
||||
- The new 'replaceViewAnimationDuration' property sets the default duration of child viewController replacement.
|
||||
|
||||
- Added the following new delegate methods
|
||||
revealController:willAddViewController:forOperation:animated:
|
||||
revealController:didAddViewController:forOperation:animated:
|
||||
|
||||
- The class also supports custom UIViewControllerAnimatedTransitioning related with the replacement of child viewControllers.
|
||||
You can implement the following new delegate method: revealController:animationControllerForOperation:fromViewController:toViewController:
|
||||
and provide an object conforming to UIViewControllerAnimatedTransitioning to implement custom animations.
|
||||
|
||||
Version 1.1.3
|
||||
|
||||
- Reverted the supportedInterfaceOrientations to the default behavior. This is consistent with Apple provided controllers
|
||||
|
||||
- The presentFrontViewHierarchically now dynamically takes into account the smaller header height of bars on iPhone landscape orientation
|
||||
|
||||
Version 1.1.2
|
||||
|
||||
- The status bar style and appearance are now handled in sync with the class animations.
|
||||
You can implement the methods preferredStatusBarStyle and prefersStatusBarHidden on your child controllers to define the desired appearance
|
||||
|
||||
- The loadView method now calls a method, loadStoryboardControllers, just for the purpose of loading child controllers from a storyboard.
|
||||
You can override this method and remove the @try @catch statements if you want the debugger not to stop at them in case you have set an exception breakpoint.
|
||||
|
||||
Version 1.1.1
|
||||
|
||||
- You can now get a tapGestureRecognizer from the class. See the tapGestureRecognizer method for more information.
|
||||
|
||||
- Both the panGestureRecognizer and the tapGestureRecognizer are now attached to the revealViewController's front content view
|
||||
by default, so they will start working just by calling their access methods even if you do not attach them to any of your views.
|
||||
This enables you to dissable interactions on your views -for example based on position- without breaking normal gesture behavior.
|
||||
|
||||
- Corrected a bug that caused a crash on iOS6 and earlier.
|
||||
|
||||
Version 1.1.0
|
||||
|
||||
- The method setFrontViewController:animated now performs the correct animations both for left and right controllers.
|
||||
|
||||
- The class now automatically handles the status bar appearance depending on the currently shown child controller.
|
||||
|
||||
Version 1.0.8
|
||||
|
||||
- Support for constant width frontView by setting a negative value to reveal widths. See properties rearViewRevealWidth and rightViewRevealWidth
|
||||
|
||||
- Support for draggableBorderWidth. See property of the same name.
|
||||
|
||||
- The Pan gesture recongnizer can be disabled by implementing the following delegate method and returning NO
|
||||
revealControllerPanGestureShouldBegin:
|
||||
|
||||
- Added the ability to track pan gesture reveal progress through the following new delegate methods
|
||||
revealController:panGestureBeganFromLocation:progress:
|
||||
revealController:panGestureMovedToLocation:progress:
|
||||
revealController:panGestureEndedToLocation:progress:
|
||||
|
||||
Previous Versions
|
||||
|
||||
- No release notes were updated for previous versions.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class SWRevealViewController;
|
||||
@protocol SWRevealViewControllerDelegate;
|
||||
|
||||
#pragma mark - SWRevealViewController Class
|
||||
|
||||
// Enum values for setFrontViewPosition:animated:
|
||||
typedef NS_ENUM( NSInteger, FrontViewPosition)
|
||||
{
|
||||
// Front controller is removed from view. Animated transitioning from this state will cause the same
|
||||
// effect than animating from FrontViewPositionLeftSideMost. Use this instead of FrontViewPositionLeftSideMost when
|
||||
// you want to remove the front view controller view from the view hierarchy.
|
||||
FrontViewPositionLeftSideMostRemoved,
|
||||
|
||||
// Left most position, front view is presented left-offseted by rightViewRevealWidth+rigthViewRevealOverdraw
|
||||
FrontViewPositionLeftSideMost,
|
||||
|
||||
// Left position, front view is presented left-offseted by rightViewRevealWidth
|
||||
FrontViewPositionLeftSide,
|
||||
|
||||
// Center position, rear view is hidden behind front controller
|
||||
FrontViewPositionLeft,
|
||||
|
||||
// Right possition, front view is presented right-offseted by rearViewRevealWidth
|
||||
FrontViewPositionRight,
|
||||
|
||||
// Right most possition, front view is presented right-offseted by rearViewRevealWidth+rearViewRevealOverdraw
|
||||
FrontViewPositionRightMost,
|
||||
|
||||
// Front controller is removed from view. Animated transitioning from this state will cause the same
|
||||
// effect than animating from FrontViewPositionRightMost. Use this instead of FrontViewPositionRightMost when
|
||||
// you intent to remove the front controller view from the view hierarchy.
|
||||
FrontViewPositionRightMostRemoved,
|
||||
|
||||
};
|
||||
|
||||
// Enum values for toggleAnimationType
|
||||
typedef NS_ENUM(NSInteger, SWRevealToggleAnimationType)
|
||||
{
|
||||
SWRevealToggleAnimationTypeSpring, // <- produces a spring based animation
|
||||
SWRevealToggleAnimationTypeEaseOut, // <- produces an ease out curve animation
|
||||
};
|
||||
|
||||
|
||||
@interface SWRevealViewController : UIViewController
|
||||
|
||||
/* Basic API */
|
||||
|
||||
// Object instance init and rear view setting
|
||||
- (id)initWithRearViewController:(UIViewController *)rearViewController frontViewController:(UIViewController *)frontViewController;
|
||||
|
||||
// Rear view controller, can be nil if not used
|
||||
@property (nonatomic) UIViewController *rearViewController;
|
||||
- (void)setRearViewController:(UIViewController *)rearViewController animated:(BOOL)animated;
|
||||
|
||||
// Optional right view controller, can be nil if not used
|
||||
@property (nonatomic) UIViewController *rightViewController;
|
||||
- (void)setRightViewController:(UIViewController *)rightViewController animated:(BOOL)animated;
|
||||
|
||||
// Front view controller, can be nil on initialization but must be supplied by the time the view is loaded
|
||||
@property (nonatomic) UIViewController *frontViewController;
|
||||
- (void)setFrontViewController:(UIViewController *)frontViewController animated:(BOOL)animated;
|
||||
|
||||
// Sets the frontViewController using a default set of chained animations consisting on moving the
|
||||
// presented frontViewController to the right most possition, replacing it, and moving it back to the left position
|
||||
- (void)pushFrontViewController:(UIViewController *)frontViewController animated:(BOOL)animated;
|
||||
|
||||
// Sets the frontViewController position. You can call the animated version several times with different
|
||||
// positions to obtain a set of animations that will be performed in order one after the other.
|
||||
@property (nonatomic) FrontViewPosition frontViewPosition;
|
||||
- (void)setFrontViewPosition:(FrontViewPosition)frontViewPosition animated:(BOOL)animated;
|
||||
|
||||
// The following methods are meant to be directly connected to the action method of a button
|
||||
// to perform user triggered postion change of the controller views. This is ussually added to a
|
||||
// button on top left or right of the frontViewController
|
||||
- (IBAction)revealToggle:(id)sender;
|
||||
- (IBAction)rightRevealToggle:(id)sender; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// Toogles the current state of the front controller between Left or Right and fully visible
|
||||
// Use setFrontViewPosition to set a particular position
|
||||
- (void)revealToggleAnimated:(BOOL)animated;
|
||||
- (void)rightRevealToggleAnimated:(BOOL)animated; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// The following method will provide a panGestureRecognizer suitable to be added to any view
|
||||
// in order to perform usual drag and swipe gestures to reveal the rear views. This is usually added to the top bar
|
||||
// of a front controller, but it can be added to your frontViewController view or to the reveal controller view to provide full screen panning.
|
||||
// By default, the panGestureRecognizer is added to the view containing the front controller view. To keep this default behavior
|
||||
// you still need to call this method, just don't add it to any of your views. The default setup allows you to dissable
|
||||
// user interactions on your controller views without affecting the recognizer.
|
||||
- (UIPanGestureRecognizer*)panGestureRecognizer;
|
||||
|
||||
// The following method will provide a tapGestureRecognizer suitable to be added to any view on the frontController
|
||||
// for concealing the rear views. By default no tap recognizer is created or added to any view, however if you call this method after
|
||||
// the controller's view has been loaded the recognizer is added to the reveal controller's front container view.
|
||||
// Thus, you can disable user interactions on your frontViewController view without affecting the tap recognizer.
|
||||
- (UITapGestureRecognizer*)tapGestureRecognizer;
|
||||
|
||||
/* The following properties are provided for further customization, they are set to default values on initialization,
|
||||
you do not generally have to set them */
|
||||
|
||||
// Defines how much of the rear or right view is shown, default is 260.
|
||||
// Negative values indicate that the reveal width should be computed by substracting the full front view width,
|
||||
// so the revealed frontView width is kept constant when bounds change as opposed to the rear or right width.
|
||||
@property (nonatomic) CGFloat rearViewRevealWidth;
|
||||
@property (nonatomic) CGFloat rightViewRevealWidth; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// Defines how much of an overdraw can occur when dragging further than 'rearViewRevealWidth', default is 60.
|
||||
@property (nonatomic) CGFloat rearViewRevealOverdraw;
|
||||
@property (nonatomic) CGFloat rightViewRevealOverdraw; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// Defines how much displacement is applied to the rear view when animating or dragging the front view, default is 40.
|
||||
@property (nonatomic) CGFloat rearViewRevealDisplacement;
|
||||
@property (nonatomic) CGFloat rightViewRevealDisplacement; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// Defines a width on the border of the view attached to the panGesturRecognizer where the gesture is allowed,
|
||||
// default is 0 which means no restriction.
|
||||
@property (nonatomic) CGFloat draggableBorderWidth;
|
||||
|
||||
// If YES (the default) the controller will bounce to the Left position when dragging further than 'rearViewRevealWidth'
|
||||
@property (nonatomic) BOOL bounceBackOnOverdraw;
|
||||
@property (nonatomic) BOOL bounceBackOnLeftOverdraw; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// If YES (default is NO) the controller will allow permanent dragging up to the rightMostPosition
|
||||
@property (nonatomic) BOOL stableDragOnOverdraw;
|
||||
@property (nonatomic) BOOL stableDragOnLeftOverdraw; // <-- simetric implementation of the above for the rightViewController
|
||||
|
||||
// If YES (default is NO) the front view controller will be ofsseted vertically by the height of a navigation bar.
|
||||
// Use this on iOS7 when you add an instance of RevealViewController as a child of a UINavigationController (or another SWRevealViewController)
|
||||
// and you want the front view controller to be presented below the navigation bar of its UINavigationController grand parent.
|
||||
// The rearViewController will still appear full size and blurred behind the navigation bar of its UINavigationController grand parent
|
||||
@property (nonatomic) BOOL presentFrontViewHierarchically;
|
||||
|
||||
// Velocity required for the controller to toggle its state based on a swipe movement, default is 250
|
||||
@property (nonatomic) CGFloat quickFlickVelocity;
|
||||
|
||||
// Duration for the revealToggle animation, default is 0.25
|
||||
@property (nonatomic) NSTimeInterval toggleAnimationDuration;
|
||||
|
||||
// Animation type, default is SWRevealToggleAnimationTypeSpring
|
||||
@property (nonatomic) SWRevealToggleAnimationType toggleAnimationType;
|
||||
|
||||
// When animation type is SWRevealToggleAnimationTypeSpring determines the damping ratio, default is 1
|
||||
@property (nonatomic) CGFloat springDampingRatio;
|
||||
|
||||
// Duration for animated replacement of view controllers
|
||||
@property (nonatomic) NSTimeInterval replaceViewAnimationDuration;
|
||||
|
||||
// Defines the radius of the front view's shadow, default is 2.5f
|
||||
@property (nonatomic) CGFloat frontViewShadowRadius;
|
||||
|
||||
// Defines the radius of the front view's shadow offset default is {0.0f,2.5f}
|
||||
@property (nonatomic) CGSize frontViewShadowOffset;
|
||||
|
||||
// Defines the front view's shadow opacity, default is 1.0f
|
||||
@property (nonatomic) CGFloat frontViewShadowOpacity;
|
||||
|
||||
// Defines the front view's shadow color, default is blackColor
|
||||
@property (nonatomic) UIColor *frontViewShadowColor;
|
||||
|
||||
// Defines whether the controller should clip subviews to its view bounds. Default is NO.
|
||||
// Set this to YES when you are presenting this controller as a non full-screen child of a
|
||||
// custom container controller which does not explicitly clips its subviews.
|
||||
@property (nonatomic) BOOL clipsViewsToBounds;
|
||||
|
||||
// Defines whether your views clicable area extends beyond the bounds of this controller. Default is NO.
|
||||
// Set this to YES if you are presenting this controller as a non full-screen child of a custom container and you are not
|
||||
// clipping your front view to this controller bounds.
|
||||
@property (nonatomic) BOOL extendsPointInsideHit;
|
||||
|
||||
/* The class properly handles all the relevant calls to appearance methods on the contained controllers.
|
||||
Moreover you can assign a delegate to let the class inform you on positions and animation activity */
|
||||
|
||||
// Delegate
|
||||
@property (nonatomic,weak) id<SWRevealViewControllerDelegate> delegate;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - SWRevealViewControllerDelegate Protocol
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SWRevealControllerOperationNone,
|
||||
SWRevealControllerOperationReplaceRearController,
|
||||
SWRevealControllerOperationReplaceFrontController,
|
||||
SWRevealControllerOperationReplaceRightController,
|
||||
|
||||
} SWRevealControllerOperation;
|
||||
|
||||
|
||||
@protocol SWRevealViewControllerDelegate<NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
// The following delegate methods will be called before and after the front view moves to a position
|
||||
- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position;
|
||||
- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position;
|
||||
|
||||
// This will be called inside the reveal animation, thus you can use it to place your own code that will be animated in sync
|
||||
- (void)revealController:(SWRevealViewController *)revealController animateToPosition:(FrontViewPosition)position;
|
||||
|
||||
// Implement this to return NO when you want the pan gesture recognizer to be ignored
|
||||
- (BOOL)revealControllerPanGestureShouldBegin:(SWRevealViewController *)revealController;
|
||||
|
||||
// Implement this to return NO when you want the tap gesture recognizer to be ignored
|
||||
- (BOOL)revealControllerTapGestureShouldBegin:(SWRevealViewController *)revealController;
|
||||
|
||||
// Implement this to return YES if you want other gesture recognizer to share touch events with the pan gesture
|
||||
- (BOOL)revealController:(SWRevealViewController *)revealController
|
||||
panGestureRecognizerShouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
|
||||
|
||||
// Implement this to return YES if you want other gesture recognizer to share touch events with the tap gesture
|
||||
- (BOOL)revealController:(SWRevealViewController *)revealController
|
||||
tapGestureRecognizerShouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
|
||||
|
||||
// Called when the gestureRecognizer began and ended
|
||||
- (void)revealControllerPanGestureBegan:(SWRevealViewController *)revealController;
|
||||
- (void)revealControllerPanGestureEnded:(SWRevealViewController *)revealController;
|
||||
|
||||
// The following methods provide a means to track the evolution of the gesture recognizer.
|
||||
// The 'location' parameter is the X origin coordinate of the front view as the user drags it
|
||||
// The 'progress' parameter is a number ranging from 0 to 1 indicating the front view location relative to the
|
||||
// rearRevealWidth or rightRevealWidth. 1 is fully revealed, dragging ocurring in the overDraw region will result in values above 1.
|
||||
// The 'overProgress' parameter is a number ranging from 0 to 1 indicating the front view location relative to the
|
||||
// overdraw region. 0 is fully revealed, 1 is fully overdrawn. Negative values occur inside the normal reveal region
|
||||
- (void)revealController:(SWRevealViewController *)revealController panGestureBeganFromLocation:(CGFloat)location progress:(CGFloat)progress overProgress:(CGFloat)overProgress;
|
||||
- (void)revealController:(SWRevealViewController *)revealController panGestureMovedToLocation:(CGFloat)location progress:(CGFloat)progress overProgress:(CGFloat)overProgress;
|
||||
- (void)revealController:(SWRevealViewController *)revealController panGestureEndedToLocation:(CGFloat)location progress:(CGFloat)progress overProgress:(CGFloat)overProgress;
|
||||
|
||||
// Notification of child controller replacement
|
||||
- (void)revealController:(SWRevealViewController *)revealController willAddViewController:(UIViewController *)viewController
|
||||
forOperation:(SWRevealControllerOperation)operation animated:(BOOL)animated;
|
||||
- (void)revealController:(SWRevealViewController *)revealController didAddViewController:(UIViewController *)viewController
|
||||
forOperation:(SWRevealControllerOperation)operation animated:(BOOL)animated;
|
||||
|
||||
// Support for custom transition animations while replacing child controllers. If implemented, it will be fired in response
|
||||
// to calls to 'setXXViewController' methods
|
||||
- (id<UIViewControllerAnimatedTransitioning>)revealController:(SWRevealViewController *)revealController
|
||||
animationControllerForOperation:(SWRevealControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC;
|
||||
|
||||
// DEPRECATED - The following delegate methods will be removed some time in the future
|
||||
- (void)revealController:(SWRevealViewController *)revealController panGestureBeganFromLocation:(CGFloat)location progress:(CGFloat)progress; // (DEPRECATED)
|
||||
- (void)revealController:(SWRevealViewController *)revealController panGestureMovedToLocation:(CGFloat)location progress:(CGFloat)progress; // (DEPRECATED)
|
||||
- (void)revealController:(SWRevealViewController *)revealController panGestureEndedToLocation:(CGFloat)location progress:(CGFloat)progress; // (DEPRECATED)
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - UIViewController(SWRevealViewController) Category
|
||||
|
||||
// A category of UIViewController to let childViewControllers easily access their parent SWRevealViewController
|
||||
@interface UIViewController(SWRevealViewController)
|
||||
|
||||
- (SWRevealViewController*)revealViewController;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - StoryBoard support Classes
|
||||
|
||||
/* StoryBoard support */
|
||||
|
||||
// String identifiers to be applied to segues on a storyboard
|
||||
extern NSString* const SWSegueRearIdentifier; // this is @"sw_rear"
|
||||
extern NSString* const SWSegueFrontIdentifier; // this is @"sw_front"
|
||||
extern NSString* const SWSegueRightIdentifier; // this is @"sw_right"
|
||||
|
||||
/* This will allow the class to be defined on a storyboard */
|
||||
|
||||
// Use this along with one of the above segue identifiers to segue to the initial state
|
||||
@interface SWRevealViewControllerSegueSetController : UIStoryboardSegue
|
||||
@end
|
||||
|
||||
// Use this to push a view controller
|
||||
@interface SWRevealViewControllerSeguePushController : UIStoryboardSegue
|
||||
@end
|
||||
|
||||
|
||||
//#pragma mark - SWRevealViewControllerSegue (DEPRECATED)
|
||||
//
|
||||
//@interface SWRevealViewControllerSegue : UIStoryboardSegue // DEPRECATED: USE SWRevealViewControllerSegueSetController instead
|
||||
//@property (nonatomic, strong) void(^performBlock)( SWRevealViewControllerSegue* segue, UIViewController* svc, UIViewController* dvc );
|
||||
//@end
|
||||
1896
Pods/SWRevealViewController/SWRevealViewController/SWRevealViewController.m
generated
Executable file
1896
Pods/SWRevealViewController/SWRevealViewController/SWRevealViewController.m
generated
Executable file
File diff suppressed because it is too large
Load Diff
18
Pods/SwiftyJSON/README.md
generated
18
Pods/SwiftyJSON/README.md
generated
@ -77,7 +77,7 @@ if let userName = json[999999]["wrong_key"]["wrong_name"].string {
|
||||
|
||||
## Requirements
|
||||
|
||||
- iOS 7.0+ / OS X 10.9+
|
||||
- iOS 7.0+ / Mac OS X 10.9+
|
||||
- Xcode 7
|
||||
|
||||
##Integration
|
||||
@ -100,22 +100,6 @@ You can use [Carthage](https://github.com/Carthage/Carthage) to install `SwiftyJ
|
||||
github "SwiftyJSON/SwiftyJSON"
|
||||
```
|
||||
|
||||
####Swift Package Manager
|
||||
You can use [The Swift Package Manager](https://swift.org/package-manager) to install `SwiftyJSON` by adding the proper description to your `Package.swift` file:
|
||||
```swift
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "YOUR_PROJECT_NAME",
|
||||
targets: [],
|
||||
dependencies: [
|
||||
.Package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", versions: "2.3.3" ..< Version.max)
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
Note that the [Swift Package Manager](https://swift.org/package-manager) is still in early design and development, for more infomation checkout its [GitHub Page](https://github.com/apple/swift-package-manager)
|
||||
|
||||
####Manually (iOS 7+, OS X 10.9+)
|
||||
|
||||
To use this library in your project manually you may:
|
||||
|
||||
20
Pods/SwiftyJSON/Source/SwiftyJSON.swift
generated
20
Pods/SwiftyJSON/Source/SwiftyJSON.swift
generated
@ -118,7 +118,7 @@ public struct JSON {
|
||||
- returns: The created JSON
|
||||
*/
|
||||
public init(_ jsonDictionary:[String: JSON]) {
|
||||
var dictionary = [String: AnyObject](minimumCapacity: jsonDictionary.count)
|
||||
var dictionary = [String: AnyObject]()
|
||||
for (key, json) in jsonDictionary {
|
||||
dictionary[key] = json.object
|
||||
}
|
||||
@ -235,7 +235,7 @@ extension JSON : Swift.CollectionType, Swift.SequenceType, Swift.Indexable {
|
||||
}
|
||||
}
|
||||
|
||||
/// If `type` is `.Array` or `.Dictionary`, return `array.isEmpty` or `dictonary.isEmpty` otherwise return `true`.
|
||||
/// If `type` is `.Array` or `.Dictionary`, return `array.empty` or `dictonary.empty` otherwise return `true`.
|
||||
public var isEmpty: Bool {
|
||||
get {
|
||||
switch self.type {
|
||||
@ -396,9 +396,7 @@ public struct JSONGenerator : GeneratorType {
|
||||
switch self.type {
|
||||
case .Array:
|
||||
if let o = self.arrayGenerate?.next() {
|
||||
let i = self.arrayIndex
|
||||
self.arrayIndex += 1
|
||||
return (String(i), JSON(o))
|
||||
return (String(self.arrayIndex++), JSON(o))
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
@ -442,7 +440,7 @@ extension String: JSONSubscriptType {
|
||||
|
||||
extension JSON {
|
||||
|
||||
/// If `type` is `.Array`, return json whose object is `array[index]`, otherwise return null json with error.
|
||||
/// If `type` is `.Array`, return json which's object is `array[index]`, otherwise return null json with error.
|
||||
private subscript(index index: Int) -> JSON {
|
||||
get {
|
||||
if self.type != .Array {
|
||||
@ -466,7 +464,7 @@ extension JSON {
|
||||
}
|
||||
}
|
||||
|
||||
/// If `type` is `.Dictionary`, return json whose object is `dictionary[key]` , otherwise return null json with error.
|
||||
/// If `type` is `.Dictionary`, return json which's object is `dictionary[key]` , otherwise return null json with error.
|
||||
private subscript(key key: String) -> JSON {
|
||||
get {
|
||||
var r = JSON.null
|
||||
@ -537,7 +535,7 @@ extension JSON {
|
||||
}
|
||||
|
||||
/**
|
||||
Find a json in the complex data structures by using the Int/String's array.
|
||||
Find a json in the complex data structuresby using the Int/String's array.
|
||||
|
||||
- parameter path: The target json's path. Example:
|
||||
|
||||
@ -598,7 +596,7 @@ extension JSON: Swift.FloatLiteralConvertible {
|
||||
extension JSON: Swift.DictionaryLiteralConvertible {
|
||||
|
||||
public init(dictionaryLiteral elements: (String, AnyObject)...) {
|
||||
self.init(elements.reduce([String : AnyObject](minimumCapacity: elements.count)){(dictionary: [String : AnyObject], element:(String, AnyObject)) -> [String : AnyObject] in
|
||||
self.init(elements.reduce([String : AnyObject]()){(dictionary: [String : AnyObject], element:(String, AnyObject)) -> [String : AnyObject] in
|
||||
var d = dictionary
|
||||
d[element.0] = element.1
|
||||
return d
|
||||
@ -733,7 +731,7 @@ extension JSON {
|
||||
//Optional [String : JSON]
|
||||
public var dictionary: [String : JSON]? {
|
||||
if self.type == .Dictionary {
|
||||
return self.rawDictionary.reduce([String : JSON](minimumCapacity: count)) { (dictionary: [String : JSON], element: (String, AnyObject)) -> [String : JSON] in
|
||||
return self.rawDictionary.reduce([String : JSON]()) { (dictionary: [String : JSON], element: (String, AnyObject)) -> [String : JSON] in
|
||||
var d = dictionary
|
||||
d[element.0] = JSON(element.1)
|
||||
return d
|
||||
@ -906,7 +904,7 @@ extension JSON {
|
||||
self.object = NSNull()
|
||||
}
|
||||
}
|
||||
public func exists() -> Bool{
|
||||
public func isExists() -> Bool{
|
||||
if let errorValue = error where errorValue.code == ErrorNotExist{
|
||||
return false
|
||||
}
|
||||
|
||||
5
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout-dummy.m
generated
Normal file
5
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout-dummy.m
generated
Normal file
@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_BSGridCollectionViewLayout : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_BSGridCollectionViewLayout
|
||||
@end
|
||||
4
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout-prefix.pch
generated
Normal file
4
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout-prefix.pch
generated
Normal file
@ -0,0 +1,4 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
|
||||
6
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout-umbrella.h
generated
Normal file
6
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout-umbrella.h
generated
Normal file
@ -0,0 +1,6 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double BSGridCollectionViewLayoutVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char BSGridCollectionViewLayoutVersionString[];
|
||||
|
||||
6
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout.modulemap
generated
Normal file
6
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout.modulemap
generated
Normal file
@ -0,0 +1,6 @@
|
||||
framework module BSGridCollectionViewLayout {
|
||||
umbrella header "BSGridCollectionViewLayout-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
9
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout.xcconfig
generated
Normal file
9
Pods/Target Support Files/BSGridCollectionViewLayout/BSGridCollectionViewLayout.xcconfig
generated
Normal file
@ -0,0 +1,9 @@
|
||||
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
26
Pods/Target Support Files/BSGridCollectionViewLayout/Info.plist
generated
Normal file
26
Pods/Target Support Files/BSGridCollectionViewLayout/Info.plist
generated
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.1.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
5
Pods/Target Support Files/BSImagePicker/BSImagePicker-dummy.m
generated
Normal file
5
Pods/Target Support Files/BSImagePicker/BSImagePicker-dummy.m
generated
Normal file
@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_BSImagePicker : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_BSImagePicker
|
||||
@end
|
||||
4
Pods/Target Support Files/BSImagePicker/BSImagePicker-prefix.pch
generated
Normal file
4
Pods/Target Support Files/BSImagePicker/BSImagePicker-prefix.pch
generated
Normal file
@ -0,0 +1,4 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
|
||||
6
Pods/Target Support Files/BSImagePicker/BSImagePicker-umbrella.h
generated
Normal file
6
Pods/Target Support Files/BSImagePicker/BSImagePicker-umbrella.h
generated
Normal file
@ -0,0 +1,6 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double BSImagePickerVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char BSImagePickerVersionString[];
|
||||
|
||||
6
Pods/Target Support Files/BSImagePicker/BSImagePicker.modulemap
generated
Normal file
6
Pods/Target Support Files/BSImagePicker/BSImagePicker.modulemap
generated
Normal file
@ -0,0 +1,6 @@
|
||||
framework module BSImagePicker {
|
||||
umbrella header "BSImagePicker-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
11
Pods/Target Support Files/BSImagePicker/BSImagePicker.xcconfig
generated
Normal file
11
Pods/Target Support Files/BSImagePicker/BSImagePicker.xcconfig
generated
Normal file
@ -0,0 +1,11 @@
|
||||
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/BSImagePicker
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_LDFLAGS = -framework "Photos" -framework "UIKit"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
26
Pods/Target Support Files/BSImagePicker/Info.plist
generated
Normal file
26
Pods/Target Support Files/BSImagePicker/Info.plist
generated
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.3.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
24
Pods/Target Support Files/BSImagePicker/ResourceBundle-BSImagePicker-Info.plist
generated
Normal file
24
Pods/Target Support Files/BSImagePicker/ResourceBundle-BSImagePicker-Info.plist
generated
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.3.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@ -482,6 +482,52 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
## BSGridCollectionViewLayout
|
||||
|
||||
Copyright (c) 2015 Joakim Gyllstrom <joakim@backslashed.se>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## BSImagePicker
|
||||
|
||||
Copyright (c) 2015 Joakim Gyllstrom <joakim@backslashed.se>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## Bolts
|
||||
|
||||
BSD License
|
||||
@ -896,6 +942,30 @@ SOFTWARE.
|
||||
|
||||
|
||||
|
||||
## SWRevealViewController
|
||||
|
||||
Copyright (c) 2013 Joan Lluch <joan.lluch@sweetwilliamsl.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.
|
||||
|
||||
Early code inspired on a similar class by Philip Kluz (Philip.Kluz@zuui.org)
|
||||
|
||||
## SwiftyJSON
|
||||
|
||||
The MIT License (MIT)
|
||||
@ -944,4 +1014,26 @@ 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.
|
||||
|
||||
|
||||
## UIImageViewModeScaleAspect
|
||||
|
||||
Copyright (c) 2013 Vivien Cormier (http://www.viviencormier.fr/)
|
||||
|
||||
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.
|
||||
Generated by CocoaPods - https://cocoapods.org
|
||||
|
||||
@ -513,6 +513,60 @@ THE SOFTWARE.
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright (c) 2015 Joakim Gyllstrom <joakim@backslashed.se>
|
||||
|
||||
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.
|
||||
</string>
|
||||
<key>Title</key>
|
||||
<string>BSGridCollectionViewLayout</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright (c) 2015 Joakim Gyllstrom <joakim@backslashed.se>
|
||||
|
||||
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.
|
||||
</string>
|
||||
<key>Title</key>
|
||||
<string>BSImagePicker</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>BSD License
|
||||
@ -999,6 +1053,34 @@ SOFTWARE.
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string> Copyright (c) 2013 Joan Lluch <joan.lluch@sweetwilliamsl.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.
|
||||
|
||||
Early code inspired on a similar class by Philip Kluz (Philip.Kluz@zuui.org)</string>
|
||||
<key>Title</key>
|
||||
<string>SWRevealViewController</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>The MIT License (MIT)
|
||||
@ -1056,6 +1138,32 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright (c) 2013 Vivien Cormier (http://www.viviencormier.fr/)
|
||||
|
||||
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.</string>
|
||||
<key>Title</key>
|
||||
<string>UIImageViewModeScaleAspect</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||
|
||||
@ -89,6 +89,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/AeroGearOAuth2/AeroGearOAuth2.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Alamofire/Alamofire.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/BSImagePicker/BSImagePicker.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Bolts/Bolts.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/FBSDKCoreKit/FBSDKCoreKit.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/FBSDKLoginKit/FBSDKLoginKit.framework"
|
||||
@ -97,8 +99,10 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Locksmith/Locksmith.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/OAuthSwift/OAuthSwift.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/PicoKit/PicoKit.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/SWRevealViewController/SWRevealViewController.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/AFNetworking/AFNetworking.framework"
|
||||
@ -106,6 +110,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/AeroGearOAuth2/AeroGearOAuth2.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Alamofire/Alamofire.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/BSImagePicker/BSImagePicker.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Bolts/Bolts.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/FBSDKCoreKit/FBSDKCoreKit.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/FBSDKLoginKit/FBSDKLoginKit.framework"
|
||||
@ -114,6 +120,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/Locksmith/Locksmith.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/OAuthSwift/OAuthSwift.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/PicoKit/PicoKit.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/SWRevealViewController/SWRevealViewController.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework"
|
||||
install_framework "$BUILT_PRODUCTS_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework"
|
||||
fi
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Headers $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AdSupport" -framework "AddressBook" -framework "AeroGearHttp" -framework "AeroGearOAuth2" -framework "Alamofire" -framework "Alamofire_SwiftyJSON" -framework "Bolts" -framework "CFNetwork" -framework "CoreGraphics" -framework "FBSDKCoreKit" -framework "FBSDKLoginKit" -framework "FBSDKShareKit" -framework "FirebaseAnalytics" -framework "FirebaseAuth" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "FirebaseStorage" -framework "GDataXML_HTML" -framework "GoogleInterchangeUtilities" -framework "GoogleNetworkingUtilities" -framework "GoogleSymbolUtilities" -framework "GoogleUtilities" -framework "Locksmith" -framework "MobileCoreServices" -framework "OAuthSwift" -framework "PicoKit" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "TYMActivityIndicatorView"
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker/BSImagePicker.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController/SWRevealViewController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AdSupport" -framework "AddressBook" -framework "AeroGearHttp" -framework "AeroGearOAuth2" -framework "Alamofire" -framework "Alamofire_SwiftyJSON" -framework "BSGridCollectionViewLayout" -framework "BSImagePicker" -framework "Bolts" -framework "CFNetwork" -framework "CoreGraphics" -framework "FBSDKCoreKit" -framework "FBSDKLoginKit" -framework "FBSDKShareKit" -framework "FirebaseAnalytics" -framework "FirebaseAuth" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "FirebaseStorage" -framework "GDataXML_HTML" -framework "GoogleInterchangeUtilities" -framework "GoogleNetworkingUtilities" -framework "GoogleSymbolUtilities" -framework "GoogleUtilities" -framework "Locksmith" -framework "MobileCoreServices" -framework "OAuthSwift" -framework "PicoKit" -framework "SWRevealViewController" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "TYMActivityIndicatorView" -framework "UIImageViewModeScaleAspect"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Headers $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AdSupport" -framework "AddressBook" -framework "AeroGearHttp" -framework "AeroGearOAuth2" -framework "Alamofire" -framework "Alamofire_SwiftyJSON" -framework "Bolts" -framework "CFNetwork" -framework "CoreGraphics" -framework "FBSDKCoreKit" -framework "FBSDKLoginKit" -framework "FBSDKShareKit" -framework "FirebaseAnalytics" -framework "FirebaseAuth" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "FirebaseStorage" -framework "GDataXML_HTML" -framework "GoogleInterchangeUtilities" -framework "GoogleNetworkingUtilities" -framework "GoogleSymbolUtilities" -framework "GoogleUtilities" -framework "Locksmith" -framework "MobileCoreServices" -framework "OAuthSwift" -framework "PicoKit" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "TYMActivityIndicatorView"
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker/BSImagePicker.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController/SWRevealViewController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AdSupport" -framework "AddressBook" -framework "AeroGearHttp" -framework "AeroGearOAuth2" -framework "Alamofire" -framework "Alamofire_SwiftyJSON" -framework "BSGridCollectionViewLayout" -framework "BSImagePicker" -framework "Bolts" -framework "CFNetwork" -framework "CoreGraphics" -framework "FBSDKCoreKit" -framework "FBSDKLoginKit" -framework "FBSDKShareKit" -framework "FirebaseAnalytics" -framework "FirebaseAuth" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "FirebaseStorage" -framework "GDataXML_HTML" -framework "GoogleInterchangeUtilities" -framework "GoogleNetworkingUtilities" -framework "GoogleSymbolUtilities" -framework "GoogleUtilities" -framework "Locksmith" -framework "MobileCoreServices" -framework "OAuthSwift" -framework "PicoKit" -framework "SWRevealViewController" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "TYMActivityIndicatorView" -framework "UIImageViewModeScaleAspect"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker/BSImagePicker.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController/SWRevealViewController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker/BSImagePicker.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController/SWRevealViewController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker/BSImagePicker.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController/SWRevealViewController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp/AeroGearHttp.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2/AeroGearOAuth2.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON/Alamofire_SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout/BSGridCollectionViewLayout.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker/BSImagePicker.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Bolts/Bolts.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit/FBSDKLoginKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit/FBSDKShareKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML/GDataXML_HTML.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Locksmith/Locksmith.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift/OAuthSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PicoKit/PicoKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController/SWRevealViewController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView/TYMActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
|
||||
26
Pods/Target Support Files/SWRevealViewController/Info.plist
generated
Normal file
26
Pods/Target Support Files/SWRevealViewController/Info.plist
generated
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.3.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
5
Pods/Target Support Files/SWRevealViewController/SWRevealViewController-dummy.m
generated
Normal file
5
Pods/Target Support Files/SWRevealViewController/SWRevealViewController-dummy.m
generated
Normal file
@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_SWRevealViewController : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_SWRevealViewController
|
||||
@end
|
||||
4
Pods/Target Support Files/SWRevealViewController/SWRevealViewController-prefix.pch
generated
Normal file
4
Pods/Target Support Files/SWRevealViewController/SWRevealViewController-prefix.pch
generated
Normal file
@ -0,0 +1,4 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
|
||||
7
Pods/Target Support Files/SWRevealViewController/SWRevealViewController-umbrella.h
generated
Normal file
7
Pods/Target Support Files/SWRevealViewController/SWRevealViewController-umbrella.h
generated
Normal file
@ -0,0 +1,7 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "SWRevealViewController.h"
|
||||
|
||||
FOUNDATION_EXPORT double SWRevealViewControllerVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char SWRevealViewControllerVersionString[];
|
||||
|
||||
6
Pods/Target Support Files/SWRevealViewController/SWRevealViewController.modulemap
generated
Normal file
6
Pods/Target Support Files/SWRevealViewController/SWRevealViewController.modulemap
generated
Normal file
@ -0,0 +1,6 @@
|
||||
framework module SWRevealViewController {
|
||||
umbrella header "SWRevealViewController-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
9
Pods/Target Support Files/SWRevealViewController/SWRevealViewController.xcconfig
generated
Normal file
9
Pods/Target Support Files/SWRevealViewController/SWRevealViewController.xcconfig
generated
Normal file
@ -0,0 +1,9 @@
|
||||
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
OTHER_LDFLAGS = -framework "CoreGraphics"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
26
Pods/Target Support Files/UIImageViewModeScaleAspect/Info.plist
generated
Normal file
26
Pods/Target Support Files/UIImageViewModeScaleAspect/Info.plist
generated
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.3.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
5
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect-dummy.m
generated
Normal file
5
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect-dummy.m
generated
Normal file
@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_UIImageViewModeScaleAspect : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_UIImageViewModeScaleAspect
|
||||
@end
|
||||
4
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect-prefix.pch
generated
Normal file
4
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect-prefix.pch
generated
Normal file
@ -0,0 +1,4 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
|
||||
7
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect-umbrella.h
generated
Normal file
7
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect-umbrella.h
generated
Normal file
@ -0,0 +1,7 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "UIImageViewModeScaleAspect.h"
|
||||
|
||||
FOUNDATION_EXPORT double UIImageViewModeScaleAspectVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char UIImageViewModeScaleAspectVersionString[];
|
||||
|
||||
6
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.modulemap
generated
Normal file
6
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.modulemap
generated
Normal file
@ -0,0 +1,6 @@
|
||||
framework module UIImageViewModeScaleAspect {
|
||||
umbrella header "UIImageViewModeScaleAspect-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
8
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.xcconfig
generated
Normal file
8
Pods/Target Support Files/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.xcconfig
generated
Normal file
@ -0,0 +1,8 @@
|
||||
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
19
Pods/UIImageViewModeScaleAspect/LICENCE
generated
Normal file
19
Pods/UIImageViewModeScaleAspect/LICENCE
generated
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2013 Vivien Cormier (http://www.viviencormier.fr/)
|
||||
|
||||
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.
|
||||
88
Pods/UIImageViewModeScaleAspect/README.md
generated
Normal file
88
Pods/UIImageViewModeScaleAspect/README.md
generated
Normal file
@ -0,0 +1,88 @@
|
||||
UIImageViewModeScaleAspect (1.2)
|
||||
================================
|
||||
|
||||
<p>Create animation of a UIImageView between two contentMode ( UIViewContentModeScaleAspectFill / UIViewContentModeScaleAspectFit )</p>
|
||||
<a href="http://www.viviencormier.fr/" target="_blank">My WebSite</a> - <a href="https://twitter.com/VivienCormier" target="_blank">My Twitter</a>
|
||||
|
||||
Screenshot & Demo Video
|
||||
-----------------------
|
||||
|
||||
<p>To see a demo video, click <a href="http://www.youtube.com/watch?v=vZYbQ0Yt8eQ" target="_blank">here</a></p>
|
||||
<a href="http://www.youtube.com/watch?v=vZYbQ0Yt8eQ" target="_blank">
|
||||
<img alt="ScreenShot Demo Video" src="https://github.com/VivienCormier/UIImageViewModeScaleAspect/blob/master/Example/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect/example_1.png?raw=true" width="500" height="391" />
|
||||
<img alt="ScreenShot Demo Video" src="https://github.com/VivienCormier/UIImageViewModeScaleAspect/blob/master/Example/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect/example_2.png?raw=true" width="500" height="391" />
|
||||
</a>
|
||||
|
||||
How To Get Started
|
||||
------------------
|
||||
|
||||
<p>Use Pod (or download and add "UIImageViewModeScaleAspect.h" and "UIImageViewModeScaleAspect.m" in your xcodeprojet.) : </p>
|
||||
|
||||
``` objective-c
|
||||
pod 'UIImageViewModeScaleAspect'
|
||||
```
|
||||
|
||||
<p>Import the .h file :</p>
|
||||
``` objective-c
|
||||
#import "UIImageViewModeScaleAspect.h"
|
||||
```
|
||||
|
||||
<p>Init the UIImageViewModeScaleAspect. Important ! Do not forget to init the contentMode :</p>
|
||||
``` objective-c
|
||||
UIImageViewModeScaleAspect *myImage = [[UIImageViewModeScaleAspect alloc]initWithFrame:CGRectMake(0, 100, 200, 100)];
|
||||
myImage.contentMode = UIViewContentModeScaleAspectFill; // Add the first contentMode
|
||||
myImage.image = [UIImage imageNamed:@"becomeapanda_tumblr_com"];
|
||||
[self.view addSubview:myImage];
|
||||
```
|
||||
|
||||
Automatic animation
|
||||
-------------------
|
||||
|
||||
<p>For convert UIViewContentModeScaleAspectFill to UIViewContentModeScaleAspectFit :</p>
|
||||
``` objective-c
|
||||
[myImage animateToScaleAspectFitToFrame:CGRectMake(0, 0, 200, 200) WithDuration:0.4f afterDelay:0.0f];
|
||||
```
|
||||
|
||||
<p>For convert UIViewContentModeScaleAspectFit to UIViewContentModeScaleAspectFill :</p>
|
||||
``` objective-c
|
||||
[myImage animateToScaleAspectFillToFrame:CGRectMake(0, 0, 200, 200) WithDuration:0.4f afterDelay:0.0f];
|
||||
```
|
||||
|
||||
Manual animation
|
||||
----------------
|
||||
|
||||
<p>For convert UIViewContentModeScaleAspectFill to UIViewContentModeScaleAspectFit :</p>
|
||||
``` objective-c
|
||||
[myImage initToScaleAspectFillToFrame:CGRectMake(0, 100, 200, 100)];
|
||||
|
||||
[UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionAllowUserInteraction
|
||||
animations:^{
|
||||
//
|
||||
// Others Animation
|
||||
//
|
||||
[myImage animaticToScaleAspectFill];
|
||||
//
|
||||
// Others Animation
|
||||
//
|
||||
} completion:^(BOOL finished) {
|
||||
[myImage animateFinishToScaleAspectFill];
|
||||
}];
|
||||
```
|
||||
|
||||
<p>For convert UIViewContentModeScaleAspectFit to UIViewContentModeScaleAspectFill :</p>
|
||||
``` objective-c
|
||||
[myImage initToScaleAspectFitToFrame:CGRectMake(0, 0, 200, 200)];
|
||||
|
||||
[UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionAllowUserInteraction
|
||||
animations:^{
|
||||
//
|
||||
// Others Animation
|
||||
//
|
||||
[myImage animaticToScaleAspectFit];
|
||||
//
|
||||
// Others Animation
|
||||
//
|
||||
} completion:^(BOOL finished) {
|
||||
[myImage animateFinishToScaleAspectFit];
|
||||
}];
|
||||
```
|
||||
108
Pods/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.h
generated
Normal file
108
Pods/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.h
generated
Normal file
@ -0,0 +1,108 @@
|
||||
//
|
||||
// UIImageViewModeScaleAspect.m
|
||||
//
|
||||
// http://www.viviencormier.fr/
|
||||
//
|
||||
// Created by Vivien Cormier on 02/05/13.
|
||||
// Copyright (c) 2013 Vivien Cormier. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIImageViewModeScaleAspect : UIView
|
||||
|
||||
@property(nonatomic, strong) UIImage *image;
|
||||
|
||||
#pragma mark - Automatic Animate
|
||||
|
||||
/**
|
||||
* Automatic Animate Fill to Fit
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
*/
|
||||
- (void)animateToScaleAspectFitToFrame:(CGRect)frame
|
||||
WithDuration:(float)duration
|
||||
afterDelay:(float)delay;
|
||||
|
||||
/**
|
||||
* Automatic Animate Fit to Fill
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
*/
|
||||
- (void)animateToScaleAspectFillToFrame:(CGRect)frame
|
||||
WithDuration:(float)duration
|
||||
afterDelay:(float)delay;
|
||||
|
||||
/**
|
||||
* Automatic Animate Fill to Fit with completion
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
* @param completion
|
||||
*/
|
||||
- (void)animateToScaleAspectFitToFrame:(CGRect)frame
|
||||
WithDuration:(float)duration
|
||||
afterDelay:(float)delay
|
||||
completion:(void (^)(BOOL finished))completion;
|
||||
|
||||
/**
|
||||
* Automatic Animate Fit to Fill with completion
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
* @param completion
|
||||
*/
|
||||
- (void)animateToScaleAspectFillToFrame:(CGRect)frame
|
||||
WithDuration:(float)duration
|
||||
afterDelay:(float)delay
|
||||
completion:(void (^)(BOOL finished))completion;
|
||||
|
||||
#pragma mark - Manual Animate
|
||||
|
||||
#pragma mark - - Init Function
|
||||
|
||||
/**
|
||||
* Init Manual Function Fit
|
||||
*
|
||||
* @param newFrame
|
||||
*/
|
||||
- (void)initToScaleAspectFitToFrame:(CGRect)newFrame;
|
||||
|
||||
/**
|
||||
* Init Manual Function Fill
|
||||
*
|
||||
* @param newFrame
|
||||
*/
|
||||
- (void)initToScaleAspectFillToFrame:(CGRect)newFrame;
|
||||
|
||||
#pragma mark - - Animatic Function
|
||||
|
||||
/**
|
||||
* Animatic Fucntion Fit
|
||||
*/
|
||||
- (void)animaticToScaleAspectFit;
|
||||
|
||||
/**
|
||||
* Animatic Function Fill
|
||||
*/
|
||||
- (void)animaticToScaleAspectFill;
|
||||
|
||||
#pragma mark - - Last Function
|
||||
|
||||
/**
|
||||
* Last Function Fit
|
||||
*/
|
||||
- (void)animateFinishToScaleAspectFit;
|
||||
|
||||
/**
|
||||
* Last Function Fill
|
||||
*/
|
||||
- (void)animateFinishToScaleAspectFill;
|
||||
|
||||
@end
|
||||
346
Pods/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.m
generated
Normal file
346
Pods/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect/UIImageViewModeScaleAspect.m
generated
Normal file
@ -0,0 +1,346 @@
|
||||
//
|
||||
// UIImageViewModeScaleAspect.m
|
||||
//
|
||||
// http://www.viviencormier.fr/
|
||||
//
|
||||
// Created by Vivien Cormier on 02/05/13.
|
||||
// Copyright (c) 2013 Vivien Cormier. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UIImageViewModeScaleAspect.h"
|
||||
|
||||
@interface UIImageViewModeScaleAspect ()
|
||||
|
||||
@property (readwrite, nonatomic) CGRect newFrameWrapper;
|
||||
@property (readwrite, nonatomic) CGRect newFrameImg;
|
||||
@property (strong, nonatomic) UIImageView *img;
|
||||
|
||||
@end
|
||||
|
||||
@implementation UIImageViewModeScaleAspect
|
||||
|
||||
#pragma mark - Lifecycle
|
||||
|
||||
/**
|
||||
* Init self
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
- (id)init{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
|
||||
self.img = [[UIImageView alloc]init];
|
||||
self.img.contentMode = UIViewContentModeCenter;
|
||||
[self addSubview:_img];
|
||||
|
||||
self.clipsToBounds = YES;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
/**
|
||||
* Init self with frame
|
||||
*
|
||||
* @param frame
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
- (id)initWithFrame:(CGRect)frame{
|
||||
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
|
||||
self.img = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
|
||||
self.img.contentMode = UIViewContentModeCenter;
|
||||
[self addSubview:_img];
|
||||
|
||||
self.clipsToBounds = YES;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Automatic Animate
|
||||
|
||||
/**
|
||||
* Automatic Animate Fill to Fit
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
*/
|
||||
- (void)animateToScaleAspectFitToFrame:(CGRect)frame WithDuration:(float)duration afterDelay:(float)delay{
|
||||
|
||||
if (![self UIImageIsEmpty]) {
|
||||
[self initToScaleAspectFitToFrame:frame];
|
||||
|
||||
[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionAllowUserInteraction
|
||||
animations:^{
|
||||
[self animaticToScaleAspectFit];
|
||||
} completion:nil];
|
||||
}else{
|
||||
NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatic Animate Fit to Fill
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
*/
|
||||
- (void)animateToScaleAspectFillToFrame:(CGRect)frame WithDuration:(float)duration afterDelay:(float)delay{
|
||||
|
||||
if (![self UIImageIsEmpty]) {
|
||||
|
||||
[self initToScaleAspectFillToFrame:frame];
|
||||
|
||||
[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionAllowUserInteraction
|
||||
animations:^{
|
||||
[self animaticToScaleAspectFill];
|
||||
} completion:^(BOOL finished) {
|
||||
[self animateFinishToScaleAspectFill];
|
||||
}];
|
||||
}else{
|
||||
NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatic Animate Fill to Fit with completion
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
* @param completion
|
||||
*/
|
||||
- (void)animateToScaleAspectFitToFrame:(CGRect)frame WithDuration:(float)duration afterDelay:(float)delay completion:(void (^)(BOOL finished))completion{
|
||||
|
||||
if (![self UIImageIsEmpty]) {
|
||||
[self initToScaleAspectFitToFrame:frame];
|
||||
|
||||
[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionAllowUserInteraction
|
||||
animations:^{
|
||||
[self animaticToScaleAspectFit];
|
||||
} completion:^(BOOL finished) {
|
||||
if (completion) {
|
||||
completion(YES);
|
||||
}
|
||||
}];
|
||||
}else{
|
||||
if (completion) {
|
||||
completion(YES);
|
||||
}
|
||||
NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatic Animate Fit to Fill with completion
|
||||
*
|
||||
* @param frame
|
||||
* @param duration
|
||||
* @param delay
|
||||
* @param completion
|
||||
*/
|
||||
- (void)animateToScaleAspectFillToFrame:(CGRect)frame WithDuration:(float)duration afterDelay:(float)delay completion:(void (^)(BOOL finished))completion{
|
||||
|
||||
if (![self UIImageIsEmpty]) {
|
||||
|
||||
[self initToScaleAspectFillToFrame:frame];
|
||||
|
||||
[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionAllowUserInteraction
|
||||
animations:^{
|
||||
[self animaticToScaleAspectFill];
|
||||
} completion:^(BOOL finished) {
|
||||
[self animateFinishToScaleAspectFill];
|
||||
if (completion) {
|
||||
completion(YES);
|
||||
}
|
||||
}];
|
||||
}else{
|
||||
if (completion) {
|
||||
completion(YES);
|
||||
}
|
||||
NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - Manual Animate
|
||||
|
||||
#pragma mark - - Init Function
|
||||
|
||||
/**
|
||||
* Init Manual Function Fit
|
||||
*
|
||||
* @param newFrame
|
||||
*/
|
||||
- (void)initToScaleAspectFitToFrame:(CGRect)newFrame{
|
||||
|
||||
if (![self UIImageIsEmpty]) {
|
||||
|
||||
float ratioImg = (_img.image.size.width) / (_img.image.size.height);
|
||||
|
||||
if ([self choiseFunctionWithRationImg:ratioImg ForFrame:self.frame]) {
|
||||
self.img.frame = CGRectMake( - (self.frame.size.height * ratioImg - self.frame.size.width) / 2.0f, 0, self.frame.size.height * ratioImg, self.frame.size.height);
|
||||
}else{
|
||||
self.img.frame = CGRectMake(0, - (self.frame.size.width / ratioImg - self.frame.size.height) / 2.0f, self.frame.size.width, self.frame.size.width / ratioImg);
|
||||
}
|
||||
}else{
|
||||
NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
|
||||
}
|
||||
|
||||
_img.contentMode = UIViewContentModeScaleAspectFit;
|
||||
|
||||
self.newFrameImg = CGRectMake(0, 0, newFrame.size.width, newFrame.size.height);
|
||||
self.newFrameWrapper = newFrame;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Init Manual Function Fill
|
||||
*
|
||||
* @param newFrame
|
||||
*/
|
||||
- (void)initToScaleAspectFillToFrame:(CGRect)newFrame{
|
||||
|
||||
if (![self UIImageIsEmpty]) {
|
||||
|
||||
float ratioImg = (_img.image.size.width) / (_img.image.size.height);
|
||||
|
||||
if ([self choiseFunctionWithRationImg:ratioImg ForFrame:newFrame]) {
|
||||
self.newFrameImg = CGRectMake( - (newFrame.size.height * ratioImg - newFrame.size.width) / 2.0f, 0, newFrame.size.height * ratioImg, newFrame.size.height);
|
||||
}else{
|
||||
self.newFrameImg = CGRectMake(0, - (newFrame.size.width / ratioImg - newFrame.size.height) / 2.0f, newFrame.size.width, newFrame.size.width / ratioImg);
|
||||
}
|
||||
}else{
|
||||
NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
|
||||
}
|
||||
|
||||
self.newFrameWrapper = newFrame;
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - - Animatic Function
|
||||
|
||||
/**
|
||||
* Animatic Fucntion Fit
|
||||
*/
|
||||
- (void)animaticToScaleAspectFit{
|
||||
|
||||
self.img.frame = _newFrameImg;
|
||||
[self setFrameWrapper:_newFrameWrapper];
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Animatic Function Fill
|
||||
*/
|
||||
- (void)animaticToScaleAspectFill{
|
||||
|
||||
self.img.frame = _newFrameImg;
|
||||
[self setFrameWrapper:_newFrameWrapper];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - - Last Function
|
||||
|
||||
/**
|
||||
* Last Function Fit
|
||||
*/
|
||||
- (void)animateFinishToScaleAspectFit{
|
||||
|
||||
//
|
||||
// Fake function
|
||||
//
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Last Function Fill
|
||||
*/
|
||||
- (void)animateFinishToScaleAspectFill{
|
||||
|
||||
self.img.contentMode = UIViewContentModeScaleAspectFill;
|
||||
self.img.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - Rewrite Setter / Getter
|
||||
|
||||
- (void)setImage:(UIImage *)image{
|
||||
|
||||
self.img.image = image;
|
||||
|
||||
}
|
||||
|
||||
- (UIImage *)image{
|
||||
|
||||
return _img.image;
|
||||
|
||||
}
|
||||
|
||||
- (void)setContentMode:(UIViewContentMode)contentMode{
|
||||
|
||||
self.img.contentMode = contentMode;
|
||||
|
||||
}
|
||||
|
||||
- (UIViewContentMode)contentMode{
|
||||
|
||||
return _img.contentMode;
|
||||
|
||||
}
|
||||
|
||||
- (void)setFrame:(CGRect)frame{
|
||||
|
||||
[super setFrame:frame];
|
||||
self.img.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);
|
||||
}
|
||||
|
||||
- (void)setFrameWrapper:(CGRect)frame{
|
||||
|
||||
[super setFrame:frame];
|
||||
|
||||
}
|
||||
|
||||
#pragma marf - Private
|
||||
|
||||
- (BOOL)UIImageIsEmpty{
|
||||
|
||||
CGImageRef cgref = [_img.image CGImage];
|
||||
CIImage *cim = [_img.image CIImage];
|
||||
|
||||
if (cim == nil && cgref == NULL)
|
||||
{
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (BOOL)choiseFunctionWithRationImg:(float)ratioImg ForFrame:(CGRect)newFrame{
|
||||
|
||||
BOOL resultat = false;
|
||||
|
||||
float ratioSelf = (newFrame.size.width) / (newFrame.size.height);
|
||||
|
||||
if (ratioImg < 1) {
|
||||
if (ratioImg > ratioSelf ) resultat = true;
|
||||
}else{
|
||||
if (ratioImg > ratioSelf ) resultat = true;
|
||||
}
|
||||
|
||||
return resultat;
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
@ -9,11 +9,13 @@
|
||||
/* Begin PBXBuildFile section */
|
||||
1BD4D4EBDE19E2FBA2CCB40C /* Pods_VendooUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FACABBA7656B6698731A6B0 /* Pods_VendooUITests.framework */; };
|
||||
3E0F76FC1D01B2D7004A0159 /* Listing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0F76FB1D01B2D7004A0159 /* Listing.swift */; };
|
||||
3E1AA4301D0D9B3F005FCCBB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E1AA42F1D0D9B3F005FCCBB /* Main.storyboard */; };
|
||||
3E1AA4321D0DA071005FCCBB /* MenuPanelViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AA4311D0DA071005FCCBB /* MenuPanelViewController.swift */; };
|
||||
3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */; };
|
||||
3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4897D01D0067030069F742 /* FirebaseManager.swift */; };
|
||||
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */; };
|
||||
3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */; };
|
||||
3E6CC35B1CF2A94B00E00A70 /* SignUpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC35A1CF2A94B00E00A70 /* SignUpViewController.swift */; };
|
||||
3E6CC35E1CF2A94B00E00A70 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E6CC35C1CF2A94B00E00A70 /* Main.storyboard */; };
|
||||
3E6CC3601CF2A94B00E00A70 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3E6CC35F1CF2A94B00E00A70 /* Assets.xcassets */; };
|
||||
3E6CC3631CF2A94B00E00A70 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E6CC3611CF2A94B00E00A70 /* LaunchScreen.storyboard */; };
|
||||
3E6CC36E1CF2A94B00E00A70 /* VendooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC36D1CF2A94B00E00A70 /* VendooTests.swift */; };
|
||||
@ -23,8 +25,7 @@
|
||||
3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E7CF4001CF6366300F486B2 /* EtsyRESTAPIManager.swift */; };
|
||||
3E7CF4041CF6450D00F486B2 /* ListingObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E7CF4031CF6450D00F486B2 /* ListingObject.swift */; };
|
||||
3EA6689F1D0278E900EE57A8 /* TradingProxy in Resources */ = {isa = PBXBuildFile; fileRef = 3EA6689E1D0278E900EE57A8 /* TradingProxy */; };
|
||||
3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA668A01D02836C00EE57A8 /* EbayWebServiceManager.swift */; settings = {COMPILER_FLAGS = "-fvisibility=default"; }; };
|
||||
3EA668A31D02ECB100EE57A8 /* libicucore.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EA668A21D02ECB100EE57A8 /* libicucore.tbd */; };
|
||||
3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA668A01D02836C00EE57A8 /* EbayWebServiceManager.swift */; };
|
||||
3EB2F5161CF442CF002E6D2C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EB2F5151CF442CF002E6D2C /* Security.framework */; };
|
||||
3EC325111CF703A600626C48 /* ItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC325101CF703A600626C48 /* ItemCell.swift */; };
|
||||
3EC325151CF7104300626C48 /* ItemTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC325141CF7104300626C48 /* ItemTableViewController.swift */; };
|
||||
@ -36,6 +37,7 @@
|
||||
3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC3252C1CF894C400626C48 /* ItemImagePickerViewController.swift */; };
|
||||
3EC3252F1CF894E500626C48 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EC3252E1CF894E500626C48 /* AVFoundation.framework */; };
|
||||
3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */; };
|
||||
3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EFB0E321D0B968300A05D7A /* SideMenuView.swift */; };
|
||||
CA20AB81F709511F1A8C7963 /* Pods_VendooTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D05AEDAE485B93305CC629B5 /* Pods_VendooTests.framework */; };
|
||||
D5995A6D02C7FCA4F561AAB3 /* Pods_Vendoo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8F69918E43DC1276F42551F /* Pods_Vendoo.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
@ -62,12 +64,14 @@
|
||||
1B0AD5D22E5B4D8197481769 /* Pods-VendooTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VendooTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-VendooTests/Pods-VendooTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
368DE81C9F5991477528A929 /* Pods-VendooUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VendooUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-VendooUITests/Pods-VendooUITests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
3E0F76FB1D01B2D7004A0159 /* Listing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Listing.swift; sourceTree = "<group>"; };
|
||||
3E1AA42F1D0D9B3F005FCCBB /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
3E1AA4311D0DA071005FCCBB /* MenuPanelViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuPanelViewController.swift; sourceTree = "<group>"; };
|
||||
3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; };
|
||||
3E4897D01D0067030069F742 /* FirebaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseManager.swift; sourceTree = "<group>"; };
|
||||
3E6CC3531CF2A94B00E00A70 /* Vendoo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vendoo.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInViewController.swift; sourceTree = "<group>"; };
|
||||
3E6CC35A1CF2A94B00E00A70 /* SignUpViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpViewController.swift; sourceTree = "<group>"; };
|
||||
3E6CC35D1CF2A94B00E00A70 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
3E6CC35F1CF2A94B00E00A70 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
3E6CC3621CF2A94B00E00A70 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
3E6CC3641CF2A94B00E00A70 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
@ -96,6 +100,7 @@
|
||||
3EC3252C1CF894C400626C48 /* ItemImagePickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemImagePickerViewController.swift; sourceTree = "<group>"; };
|
||||
3EC3252E1CF894E500626C48 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListingPreviewViewController.swift; sourceTree = "<group>"; };
|
||||
3EFB0E321D0B968300A05D7A /* SideMenuView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SideMenuView.swift; sourceTree = "<group>"; };
|
||||
6979B7B8AF7AC049C2F23196 /* Pods-Vendoo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Vendoo.release.xcconfig"; path = "Pods/Target Support Files/Pods-Vendoo/Pods-Vendoo.release.xcconfig"; sourceTree = "<group>"; };
|
||||
8FACABBA7656B6698731A6B0 /* Pods_VendooUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VendooUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C9F6F7897E53ED9583C965E3 /* Pods-Vendoo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Vendoo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Vendoo/Pods-Vendoo.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
@ -109,7 +114,6 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3EA668A31D02ECB100EE57A8 /* libicucore.tbd in Frameworks */,
|
||||
3EC3252F1CF894E500626C48 /* AVFoundation.framework in Frameworks */,
|
||||
3EB2F5161CF442CF002E6D2C /* Security.framework in Frameworks */,
|
||||
D5995A6D02C7FCA4F561AAB3 /* Pods_Vendoo.framework in Frameworks */,
|
||||
@ -135,6 +139,14 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
3E1AA4331D0DD0B2005FCCBB /* Settings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */,
|
||||
);
|
||||
name = Settings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3E4897CE1D0062860069F742 /* Services */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -179,13 +191,14 @@
|
||||
3E6CC3551CF2A94B00E00A70 /* Vendoo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3EFB0E2F1D0B95B200A05D7A /* Menu */,
|
||||
3E4897CE1D0062860069F742 /* Services */,
|
||||
3EC3252B1CF8944800626C48 /* NewItemPostingSession */,
|
||||
3EC325211CF7D91100626C48 /* TabbedScreens */,
|
||||
3EC3250C1CF7026C00626C48 /* AppAuthentication */,
|
||||
3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */,
|
||||
3E6CC35C1CF2A94B00E00A70 /* Main.storyboard */,
|
||||
3E6CC35F1CF2A94B00E00A70 /* Assets.xcassets */,
|
||||
3E1AA42F1D0D9B3F005FCCBB /* Main.storyboard */,
|
||||
3E6CC3611CF2A94B00E00A70 /* LaunchScreen.storyboard */,
|
||||
3E6CC3641CF2A94B00E00A70 /* Info.plist */,
|
||||
3E7CF3FD1CF5FF8200F486B2 /* GoogleService-Info.plist */,
|
||||
@ -303,6 +316,16 @@
|
||||
name = NewItemPostingSession;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3EFB0E2F1D0B95B200A05D7A /* Menu */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3E1AA4331D0DD0B2005FCCBB /* Settings */,
|
||||
3EFB0E321D0B968300A05D7A /* SideMenuView.swift */,
|
||||
3E1AA4311D0DA071005FCCBB /* MenuPanelViewController.swift */,
|
||||
);
|
||||
name = Menu;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
58601EFD2871BD1BB6866596 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -444,8 +467,8 @@
|
||||
3EC325281CF86B5400626C48 /* Services.plist in Resources */,
|
||||
3E6CC3631CF2A94B00E00A70 /* LaunchScreen.storyboard in Resources */,
|
||||
3E7CF3FE1CF5FF8200F486B2 /* GoogleService-Info.plist in Resources */,
|
||||
3E1AA4301D0D9B3F005FCCBB /* Main.storyboard in Resources */,
|
||||
3E6CC3601CF2A94B00E00A70 /* Assets.xcassets in Resources */,
|
||||
3E6CC35E1CF2A94B00E00A70 /* Main.storyboard in Resources */,
|
||||
3EA6689F1D0278E900EE57A8 /* TradingProxy in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -595,7 +618,9 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3E6CC35B1CF2A94B00E00A70 /* SignUpViewController.swift in Sources */,
|
||||
3E1AA4321D0DA071005FCCBB /* MenuPanelViewController.swift in Sources */,
|
||||
3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */,
|
||||
3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */,
|
||||
3E0F76FC1D01B2D7004A0159 /* Listing.swift in Sources */,
|
||||
3E7CF4041CF6450D00F486B2 /* ListingObject.swift in Sources */,
|
||||
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */,
|
||||
@ -610,6 +635,7 @@
|
||||
3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */,
|
||||
3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */,
|
||||
3EC325151CF7104300626C48 /* ItemTableViewController.swift in Sources */,
|
||||
3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */,
|
||||
3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -646,14 +672,6 @@
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
3E6CC35C1CF2A94B00E00A70 /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
3E6CC35D1CF2A94B00E00A70 /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3E6CC3611CF2A94B00E00A70 /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@ -711,6 +729,7 @@
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "Pods/**";
|
||||
VALID_ARCHS = "arm64 armv7 armv7s";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -753,6 +772,7 @@
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "Pods/**";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VALID_ARCHS = "arm64 armv7 armv7s";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@ -764,13 +784,13 @@
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "Vendoo/**";
|
||||
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "\"Vendoo/**\" \"Pods/**\"";
|
||||
INFOPLIST_FILE = Vendoo/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
New_Setting = "";
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-l\"c++\"",
|
||||
"-l\"icucore\"",
|
||||
"-l\"sqlite3\"",
|
||||
@ -847,7 +867,7 @@
|
||||
SWIFT_INCLUDE_PATHS = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h";
|
||||
USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\"";
|
||||
VALID_ARCHS = "arm64 armv7 armv7s";
|
||||
VALID_ARCHS = "arm64 armv7 armv7";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -859,14 +879,13 @@
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "Vendoo/**";
|
||||
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "\"Vendoo/**\" \"Pods/**\"";
|
||||
INFOPLIST_FILE = Vendoo/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
New_Setting = "";
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-l\"c++\"",
|
||||
"-l\"icucore\"",
|
||||
"-l\"sqlite3\"",
|
||||
@ -943,7 +962,7 @@
|
||||
SWIFT_INCLUDE_PATHS = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h";
|
||||
USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\"";
|
||||
VALID_ARCHS = "arm64 armv7 armv7s";
|
||||
VALID_ARCHS = "arm64 armv7 armv7";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
30
Vendoo.xcworkspace/xcshareddata/Vendoo.xcscmblueprint
Normal file
30
Vendoo.xcworkspace/xcshareddata/Vendoo.xcscmblueprint
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "A19E30B46E376221BA857AAEF4A8709E78AC4F1E",
|
||||
"DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
|
||||
|
||||
},
|
||||
"DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
|
||||
"2079FCD6EC349AEFB6C50B82CE5C2C9BE898E484" : 0,
|
||||
"A19E30B46E376221BA857AAEF4A8709E78AC4F1E" : 0
|
||||
},
|
||||
"DVTSourceControlWorkspaceBlueprintIdentifierKey" : "ABB61D7B-98E4-4514-A26A-4F2C83856662",
|
||||
"DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
|
||||
"2079FCD6EC349AEFB6C50B82CE5C2C9BE898E484" : "..\/Vendoo",
|
||||
"A19E30B46E376221BA857AAEF4A8709E78AC4F1E" : "Vendoo\/"
|
||||
},
|
||||
"DVTSourceControlWorkspaceBlueprintNameKey" : "Vendoo",
|
||||
"DVTSourceControlWorkspaceBlueprintVersion" : 204,
|
||||
"DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "Vendoo.xcworkspace",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
|
||||
{
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/kroleo\/Vendoo.git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "2079FCD6EC349AEFB6C50B82CE5C2C9BE898E484"
|
||||
},
|
||||
{
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/bitbucket.org\/vendoo\/vendoo_v1.0",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "A19E30B46E376221BA857AAEF4A8709E78AC4F1E"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@ -90,7 +90,7 @@
|
||||
moduleName = "Vendoo"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift"
|
||||
timestampString = "486703838.796592"
|
||||
timestampString = "487506308.583877"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "96"
|
||||
@ -105,7 +105,7 @@
|
||||
moduleName = "Vendoo"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift"
|
||||
timestampString = "486703838.796724"
|
||||
timestampString = "487506308.584022"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "94"
|
||||
@ -120,7 +120,7 @@
|
||||
moduleName = "Vendoo"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift"
|
||||
timestampString = "486703838.796828"
|
||||
timestampString = "487506308.584149"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "94"
|
||||
@ -153,14 +153,397 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EbayWebServiceManager.swift"
|
||||
timestampString = "486728972.41436"
|
||||
timestampString = "486769392.540191"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "40"
|
||||
endingLineNumber = "40"
|
||||
startingLineNumber = "42"
|
||||
endingLineNumber = "42"
|
||||
landmarkName = "authorizeApp()"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486968515.991863"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "82"
|
||||
endingLineNumber = "82"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969855.220902"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "103"
|
||||
endingLineNumber = "103"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969855.220902"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "187"
|
||||
endingLineNumber = "187"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969855.220902"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "123"
|
||||
endingLineNumber = "123"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969855.220902"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "124"
|
||||
endingLineNumber = "124"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Vendoo.EtsyRESTAPIManager.(authorizeApp (__ObjC.UIViewController) -> ()).(closure #1)"
|
||||
moduleName = "Vendoo"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "487506308.592431"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "126"
|
||||
endingLineNumber = "126"
|
||||
offsetFromSymbolStart = "1457">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Vendoo.EtsyRESTAPIManager.(authorizeApp (__ObjC.UIViewController) -> ()).(closure #1).(closure #1)"
|
||||
moduleName = "Vendoo"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "487506308.592636"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "126"
|
||||
endingLineNumber = "126"
|
||||
offsetFromSymbolStart = "579">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Vendoo.EtsyRESTAPIManager.(authorizeApp (__ObjC.UIViewController) -> ()).(closure #1).(closure #2)"
|
||||
moduleName = "Vendoo"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "487506308.592799"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "78"
|
||||
endingLineNumber = "78"
|
||||
offsetFromSymbolStart = "40">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969855.220902"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "136"
|
||||
endingLineNumber = "136"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969744.147253"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "92"
|
||||
endingLineNumber = "92"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486969953.845766"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "111"
|
||||
endingLineNumber = "111"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486970416.692565"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "122"
|
||||
endingLineNumber = "122"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486970418.664722"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "120"
|
||||
endingLineNumber = "120"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486970560.514502"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "146"
|
||||
endingLineNumber = "146"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/EtsyRESTAPIManager.swift"
|
||||
timestampString = "486970563.27252"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "151"
|
||||
endingLineNumber = "151"
|
||||
landmarkName = "authorizeApp(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/AppDelegate.swift"
|
||||
timestampString = "487076807.797184"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "61"
|
||||
endingLineNumber = "61"
|
||||
landmarkName = "application(_:openURL:options:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/AppDelegate.swift"
|
||||
timestampString = "487077635.489449"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "69"
|
||||
endingLineNumber = "69"
|
||||
landmarkName = "application(_:openURL:options:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/MenuPanelViewController.swift"
|
||||
timestampString = "487506149.386087"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "18"
|
||||
endingLineNumber = "18"
|
||||
landmarkName = "viewDidLoad()"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/ItemImagePickerViewController.swift"
|
||||
timestampString = "487435569.248665"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "305"
|
||||
endingLineNumber = "305"
|
||||
landmarkName = "cancelNewListing(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/MenuPanelViewController.swift"
|
||||
timestampString = "487506149.386087"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "98"
|
||||
endingLineNumber = "98"
|
||||
landmarkName = "tableView(_:cellForRowAtIndexPath:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/SettingsViewController.swift"
|
||||
timestampString = "487504489.920498"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "127"
|
||||
endingLineNumber = "127"
|
||||
landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/SettingsViewController.swift"
|
||||
timestampString = "487470107.40686"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "94"
|
||||
endingLineNumber = "94"
|
||||
landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/MenuPanelViewController.swift"
|
||||
timestampString = "487506193.827917"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "130"
|
||||
endingLineNumber = "130"
|
||||
landmarkName = "logoutUser(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Vendoo/MenuPanelViewController.swift"
|
||||
timestampString = "487506197.085726"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "131"
|
||||
endingLineNumber = "131"
|
||||
landmarkName = "logoutUser(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
||||
BIN
Vendoo/.DS_Store
vendored
BIN
Vendoo/.DS_Store
vendored
Binary file not shown.
@ -60,6 +60,28 @@ extension AppDelegate {
|
||||
|
||||
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
|
||||
if (url.host == "oauth-callback") {
|
||||
print(url)
|
||||
let components = NSURLComponents(URL: url, resolvingAgainstBaseURL: false)
|
||||
var token:String?
|
||||
var verifier:String?
|
||||
if let queryItems = components?.queryItems
|
||||
{
|
||||
for queryItem in queryItems
|
||||
{
|
||||
if (queryItem.name.lowercaseString == "oauth_token")
|
||||
{
|
||||
token = queryItem.value
|
||||
print(token!)
|
||||
|
||||
}
|
||||
if (queryItem.name.lowercaseString == "oauth_verifier")
|
||||
{
|
||||
verifier = queryItem.value
|
||||
print(verifier)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
OAuthSwift.handleOpenURL(url)
|
||||
}
|
||||
return true
|
||||
|
||||
@ -20,15 +20,14 @@ class EbayWebServiceManager: NSObject {
|
||||
private var apiSecret: String!
|
||||
private var userEmail:String = (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!
|
||||
var isAuthorized: Bool = NSUserDefaults.standardUserDefaults().boolForKey("ebayAuthorized")
|
||||
//static let tradingClient = EBayTradingServiceClient.sharedClient()
|
||||
//let tradingClient = EBayTradingServiceClient.sharedClient()
|
||||
//---------------------------------------------//
|
||||
|
||||
|
||||
|
||||
override init(){
|
||||
super.init()
|
||||
//EbayWebServiceManager.tradingClient.debug = true
|
||||
|
||||
// self.tradingClient.debug = true
|
||||
|
||||
}
|
||||
}
|
||||
@ -41,13 +40,33 @@ extension EbayWebServiceManager {
|
||||
/*
|
||||
let sessionRequest = Trading_GetSessionIDRequestType.init()
|
||||
sessionRequest.ruName = "Kroleo-Kroleo-Vendoo-S-ktqeobkk"
|
||||
EbayWebServiceManager.tradingClient.getSessionID(sessionRequest, success: ({
|
||||
(response: Trading_GetSessionIDResponseType!) -> Void in
|
||||
|
||||
}), failure: ({
|
||||
self.tradingClient.getSessionID(sessionRequest,
|
||||
success: ({
|
||||
(response: Trading_GetSessionIDResponseType!) -> Void in
|
||||
let requestToken = Trading_FetchTokenRequestType.init()
|
||||
requestToken.sessionID = response.sessionID
|
||||
|
||||
(self.tradingClient.fetchToken(requestToken,
|
||||
success: ({
|
||||
(response: Trading_FetchTokenResponseType!) -> Void in
|
||||
|
||||
print(response.eBayAuthToken)
|
||||
print(response.restToken)
|
||||
}),
|
||||
failure: ({
|
||||
(error: NSError!, bindable: PicoBindable!) -> Void in
|
||||
|
||||
}))
|
||||
})
|
||||
))
|
||||
|
||||
}),
|
||||
failure: ({
|
||||
(error: NSError!, bindable: PicoBindable!) -> Void in
|
||||
|
||||
})
|
||||
)
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,8 @@ import Foundation
|
||||
import SwiftyJSON
|
||||
import OAuthSwift
|
||||
import Locksmith
|
||||
import AFNetworking
|
||||
|
||||
|
||||
typealias ServiceResponse = (JSON, NSError?) -> Void
|
||||
|
||||
@ -43,11 +45,15 @@ class EtsyRESTAPIManager: NSObject {
|
||||
|
||||
self.apiKey = ((dict["Etsy"] as! Dictionary<String, AnyObject>)["consumerKey"] as! String)
|
||||
self.apiSecret = ((dict["Etsy"] as! Dictionary<String, AnyObject>)["consumerSecret"] as! String)
|
||||
|
||||
|
||||
oauthswift = OAuth1Swift(parameters: ["consumerKey":self.apiKey,"consumerSecret":self.apiSecret, "requestTokenUrl" : "https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w",
|
||||
"authorizeUrl": "https://www.etsy.com/oauth/signin?",
|
||||
"accessTokenUrl": "https://openapi.etsy.com/v2/oauth/access_token?",
|
||||
"responseType": "token"])
|
||||
|
||||
|
||||
//something is wrong when here when logging back in with a diff user
|
||||
if(self.isAuthorized){
|
||||
let dictionary = Locksmith.loadDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy")
|
||||
let oauthDictionary = dictionary?["etsy_oauth"] as? Dictionary<String, AnyObject!>
|
||||
@ -56,7 +62,7 @@ class EtsyRESTAPIManager: NSObject {
|
||||
self.oauthswift.client.credential.oauth_token_secret = (oauthDictionary?["secret"] as? String!)!
|
||||
}
|
||||
|
||||
|
||||
/*scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"*/
|
||||
|
||||
}
|
||||
|
||||
@ -73,31 +79,41 @@ extension EtsyRESTAPIManager {
|
||||
func authorizeApp(viewcontroller: UIViewController){
|
||||
var boolResult: Bool!
|
||||
|
||||
|
||||
|
||||
if(!isAuthorized){
|
||||
|
||||
|
||||
oauthswift!.authorize_url_handler = SafariURLHandler(viewController: viewcontroller)
|
||||
|
||||
oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w",
|
||||
/*
|
||||
let authRequest = self.oauthswift.client.makeRequest("https://openapi.etsy.com/v2/oauth/request_token?", method: OAuthSwiftHTTPRequest.Method.GET, parameters: ["scope":"listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"] , headers: nil)
|
||||
|
||||
do{
|
||||
|
||||
try authRequest?.makeRequest()
|
||||
|
||||
|
||||
}catch{
|
||||
(error)
|
||||
}
|
||||
*/
|
||||
|
||||
/*["scope":"listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"]*/
|
||||
self.oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w",
|
||||
success: {
|
||||
data, response in
|
||||
|
||||
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
|
||||
print(dataString!)
|
||||
print(response)
|
||||
|
||||
|
||||
|
||||
//print(response.allHeaderFields)
|
||||
//print(dataSting)
|
||||
let json = JSON(data)
|
||||
print(json)
|
||||
print(dataString)
|
||||
|
||||
//getting error here when trying to retrieve the login url from the response
|
||||
//var dataDictionary = self.convertStringToDictionary(dataString! as String)
|
||||
//print(dataDictionary!["login_url"])
|
||||
}
|
||||
, failure: { error in
|
||||
print(error)
|
||||
}
|
||||
)
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), {() -> Void in
|
||||
|
||||
|
||||
self.oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: {
|
||||
@ -110,11 +126,12 @@ extension EtsyRESTAPIManager {
|
||||
|
||||
|
||||
}, failure: { error in
|
||||
print(error)
|
||||
//print(error)
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), {() -> Void in
|
||||
print(self.oauthswift!.client.credential.oauth_token)
|
||||
print(self.oauthswift!.client.credential.oauth_token_secret)
|
||||
print(self.oauthswift.allowMissingOauthVerifier = true)
|
||||
//save data to keychain
|
||||
let creds = self.oauthswift?.client.credential
|
||||
let oauth: Dictionary<String, AnyObject!>? = [ "token" : creds!.oauth_token, "secret" : creds!.oauth_token_secret ]
|
||||
@ -151,7 +168,19 @@ extension EtsyRESTAPIManager {
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
//getting error here when trying to retrieve the login url from the response
|
||||
//var dataDictionary = self.convertStringToDictionary(dataString! as String)
|
||||
//print(dataDictionary!["login_url"])
|
||||
}
|
||||
, failure: { error in
|
||||
print(error)
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -58,6 +58,12 @@
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSIncludeSubdomains</key>
|
||||
<true/>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
<key>NSExceptionMinimumTLSVersion</key>
|
||||
<string>TLSv1.1</string>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user