[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## Build generated\nbuild/\nDerivedData\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n\n## Other\n*.xccheckout\n*.moved-aside\n*.xcuserstate\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n#Pods/\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n.DS_Store"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Takuya Okamoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "README.md",
    "content": "\n# TKSubmitTransition\n\n[![Platform](http://img.shields.io/badge/platform-ios-blue.svg?style=flat\n             )](https://developer.apple.com/iphone/index.action)\n[![Language](http://img.shields.io/badge/language-swift-brightgreen.svg?style=flat\n             )](https://developer.apple.com/swift)\n[![License](http://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat\n            )](http://mit-license.org)\n[![CocoaPods](https://img.shields.io/cocoapods/v/TKSubmitTransition.svg)]()\n\n\nInpired by https://dribbble.com/shots/1945593-Login-Home-Screen\n\nI created Animated UIButton of Loading Animation and Transition Animation.\n\nAs you can see in the GIF Animation Demo below, you can find the “Sign in” button rolling and after that, next UIViewController will fade-in. \n\nI made them as classes and you can use it with ease.\n\n[Objective-C version is here.](https://github.com/wwdc14/HySubmitTransitionObjective-C)\n\n# Demo\n![Demo GIF Animation](https://github.com/entotsu/TKSubmitTransition/blob/master/demo.gif \"Demo GIF Animation\")\n\n# Installation\n\n## Cocoapods ##\n\n**Swift 5**\n\n``` ruby\npod 'TKSubmitTransition', :git => 'https://github.com/entotsu/TKSubmitTransition.git'\n```\n\n**Swift 4**\n\n``` ruby\npod 'TKSubmitTransition', :git => 'https://github.com/entotsu/TKSubmitTransition.git', :branch => 'swift4'\n```\n\n**Swift 3** \n\n``` ruby\npod 'TKSubmitTransition', :git => 'https://github.com/entotsu/TKSubmitTransition.git', :tag => '2.0'\n```\n\n\n**Swift 2 & Below** \n\n``` ruby\npod 'TKSubmitTransition', '~> 0.2' \n```\n\n\n## Manually ##\nDrag all the files from `SubmitTransition/Classes` into your project.\n\n# Usage\n\n### Storyboard\n\nJust drag a `UIButton` on to your storyboard and change the custom class to `TKSubmitTransition` in the identity inspector.\n\n![Button](http://i.imgur.com/mqSt8y8.png)\n\nChange the settings of the button via the storyboard.\n\n![Settings](http://i.imgur.com/maA1Aiw.png)\n\nThen create an `IBOutlet` to your view controller.\n\n![IBOutlet](http://i.imgur.com/1VK9umA.jpg)\n\nYou can now move on to `Animation Method` for further instructions.\n\n### Programatically\n\nYou can use `TKTransitionSubmitButton` just like any other `UIButton`. It works practically the same.\n\nAdd this at the top of your file:\n\n``` swift\nimport SubmitTransition\n```\n\nThen create a variable above your view did load for the button\n\n``` swift\nvar bin: TKTransitionSubmitButton!\n```\n\nthen finally in the view did load add the button\n\n``` swift\nbtn = TKTransitionSubmitButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width - 64, height: 44))\nbtn.center = self.view.center\nbtn.frame.bottom = self.view.frame.height - 60\nbtn.setTitle(\"Sign in\", for: UIControlState())\nbtn.titleLabel?.font = UIFont(name: \"HelveticaNeue-Light\", size: 14)\nself.view.addSubview(btn)\n```\n\n## Animation Method\n\nUse this to animate your button. Follow the steps in `Delegation` to setup the transition.\n\n``` swift\nfunc didStartYourLoading() {\n  btn.startLoadingAnimation()\n}\n\nfunc didFinishYourLoading() {\n  btn.startFinishAnimation {\n    //Your Transition\n    let secondVC = SecondViewController()\n    secondVC.transitioningDelegate = self\n    self.presentViewController(secondVC, animated: true, completion: nil)\n  }\n}\n\n```\n\n## Networking\n\nIf you are running requests to a server and are waiting a responce, you can use something like this to stop and start the animation:\n\n``` swift\n// start loading the button animations\nbutton.startLoadingAnimation()\n\n// run query in background thread\nasync.background {\n  let query = PFQuery(className: \"Blah\")\n  query.whereKey(\"user\", equalTo: user)\n\tlet results = try! query.findObjects()\n  \n\tif results.count == 0 {\n\t\t// insert alertView telling user that their details don't work\n\t}\n\telse {\n\t\t// return to main thread to complete login\n\t\tasync.main {\n                        // tell the button to finish its animations\n\t\t\tbutton.startFinishingAnimation(1) {\n\t\t\t        let sb = UIStoryboard(name: \"Main\", bundle: nil)\n\t            \t        let vc = sb.instantiateViewController(withIdentifier: \"MainVC\")\n\t\t\t        vc.transitioningDelegate = self\n\t\t\t        self.present(vc, animated: true, completion: nil)\n                        }\n\t\t}\n\t}\n```\nThanks to [@sarfrazb](https://github.com/sarfrazb) for pointing this out.\n\n## TKFadeInAnimator\nThis Library also supply fade-in Animator Class of `UIViewControllerAnimatedTransitioning`.\n\nPlease use This for transition animation.\n\n### Delegation\n\n#### Make sure your class implements the UIViewControllerTransitioningDelegate protocol like so\n> class ViewController: UIViewController, UIViewControllerTransitioningDelegate {\n\n#### Setup the transitioning delegate\n`secondVC.transitioningDelegate = self`\n\n#### Implement the delegate\n\n**Swift 3/4**\n\n``` swift\nfunc animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {\n  return TKFadeInAnimator(transitionDuration: 0.5, startingAlpha: 0.8)\n}\n\nfunc animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {\n  return nil\n}\n```\n\n**Swift 2 & Below**\n\n``` swift\n// MARK: UIViewControllerTransitioningDelegate\nfunc animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {\n  let fadeInAnimator = TKFadeInAnimator()\n  return fadeInAnimator\n}\n\nfunc animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {\n  return nil\n}\n\n```\n\nIf you need any help with the setup feel free to look at the sample or create an issue.\n\n# Contribution\n\n- If you've found a bug, please open an issue.\n- If you've a feature request, please open a pull request\n- Please check any closed issues before you open a new one!\n\n"
  },
  {
    "path": "SubmitTransition/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  SubmitTransition\n//\n//  Created by Takuya Okamoto on 2015/08/06.\n//  Copyright (c) 2015年 Uniface. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n        return true\n    }\n\n    func applicationWillResignActive(_ application: UIApplication) {\n        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.\n    }\n\n    func applicationDidEnterBackground(_ application: UIApplication) {\n        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n    }\n\n    func applicationWillEnterForeground(_ application: UIApplication) {\n        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.\n    }\n\n    func applicationDidBecomeActive(_ application: UIApplication) {\n        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n    }\n\n    func applicationWillTerminate(_ application: UIApplication) {\n        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n    }\n\n\n}\n\n"
  },
  {
    "path": "SubmitTransition/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"6214\" systemVersion=\"14A314h\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"6207\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"  Copyright (c) 2015年 Uniface. All rights reserved.\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"SubmitTransition\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "SubmitTransition/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16F73\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" customModule=\"SubmitTransition\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"y3c-jy-aDJ\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"wfy-db-euE\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kK3-qa-3bd\" customClass=\"TKTransitionSubmitButton\" customModule=\"SubmitTransition\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"27\" width=\"311\" height=\"44\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"PgQ-MO-Vpx\"/>\n                                </constraints>\n                                <state key=\"normal\" title=\"Submit\">\n                                    <color key=\"titleColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"normalBackgroundColor\">\n                                        <color key=\"value\" red=\"0.80000000000000004\" green=\"0.0\" blue=\"0.20205424067083444\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightedBackgroundColor\">\n                                        <color key=\"value\" red=\"0.56159474206349214\" green=\"0.11322686558675865\" blue=\"0.022467013972638509\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                                <connections>\n                                    <action selector=\"onTapButton:\" destination=\"BYZ-38-t0r\" eventType=\"touchUpInside\" id=\"7bQ-Kt-P9v\"/>\n                                </connections>\n                            </button>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"kK3-qa-3bd\" firstAttribute=\"top\" secondItem=\"y3c-jy-aDJ\" secondAttribute=\"bottom\" constant=\"7\" id=\"dey-kk-L5l\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"kK3-qa-3bd\" secondAttribute=\"trailing\" constant=\"32\" id=\"l4h-No-ud1\"/>\n                            <constraint firstItem=\"kK3-qa-3bd\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"32\" id=\"syV-XJ-6X0\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"btnFromNib\" destination=\"kK3-qa-3bd\" id=\"TSw-GI-mbg\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "SubmitTransition/Classes/CGRectEx.swift",
    "content": "//\n//  CGRectEx.swift\n//  SubmitTransition\n//\n//  Created by Takuya Okamoto on 2015/08/07.\n//  Copyright (c) 2015年 Uniface. All rights reserved.\n//\n\nimport UIKit\n\nextension CGRect {\n    var x: CGFloat {\n        get {\n            return self.origin.x\n        }\n        set {\n            self = CGRect(x: newValue, y: self.y, width: self.width, height: self.height)\n        }\n    }\n    \n    var y: CGFloat {\n        get {\n            return self.origin.y\n        }\n        set {\n            self = CGRect(x: self.x, y: newValue, width: self.width, height: self.height)\n        }\n    }\n    \n    var width: CGFloat {\n        get {\n            return self.size.width\n        }\n        set {\n            self = CGRect(x: self.x, y: self.y, width: newValue, height: self.height)\n        }\n    }\n    \n    var height: CGFloat {\n        get {\n            return self.size.height\n        }\n        set {\n            self = CGRect(x: self.x, y: self.y, width: self.width, height: newValue)\n        }\n    }\n    \n    \n    var top: CGFloat {\n        get {\n            return self.origin.y\n        }\n        set {\n            y = newValue\n        }\n    }\n    \n    var bottom: CGFloat {\n        get {\n            return self.origin.y + self.size.height\n        }\n        set {\n            self = CGRect(x: x, y: newValue - height, width: width, height: height)\n        }\n    }\n    \n    var left: CGFloat {\n        get {\n            return self.origin.x\n        }\n        set {\n            self.x = newValue\n        }\n    }\n    \n    var right: CGFloat {\n        get {\n            return x + width\n        }\n        set {\n            self = CGRect(x: newValue - width, y: y, width: width, height: height)\n        }\n    }\n    \n    \n    var midX: CGFloat {\n        get {\n            return self.x + self.width / 2\n        }\n        set {\n            self = CGRect(x: newValue - width / 2, y: y, width: width, height: height)\n        }\n    }\n    \n    var midY: CGFloat {\n        get {\n            return self.y + self.height / 2\n        }\n        set {\n            self = CGRect(x: x, y: newValue - height / 2, width: width, height: height)\n        }\n    }\n    \n\n    var center: CGPoint {\n        get {\n            return CGPoint(x: self.midX, y: self.midY)\n        }\n        set {\n            self = CGRect(x: newValue.x - width / 2, y: newValue.y - height / 2, width: width, height: height)\n        }\n    }\n}\n"
  },
  {
    "path": "SubmitTransition/Classes/FadeTransition.swift",
    "content": "//\n//  FadeTransition.swift\n//  SubmitTransition\n//\n//  Created by Takuya Okamoto on 2015/08/07.\n//  Copyright (c) 2015年 Uniface. All rights reserved.\n//\n\nimport UIKit\n\n\nopen class TKFadeInAnimator: NSObject, UIViewControllerAnimatedTransitioning {\n    var transitionDuration: TimeInterval = 0.5\n    var startingAlpha: CGFloat = 0.0\n\n    public convenience init(transitionDuration: TimeInterval, startingAlpha: CGFloat){\n        self.init()\n        self.transitionDuration = transitionDuration\n        self.startingAlpha = startingAlpha\n    }\n\n    open func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {\n        return transitionDuration\n    }\n    \n    open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {\n        let containerView = transitionContext.containerView\n        \n        let toView = transitionContext.view(forKey: .to)!\n        let fromView = (transitionContext.viewController(forKey: .from)?.view)!\n\n        toView.alpha = startingAlpha\n        fromView.alpha = 0.8\n        \n        containerView.addSubview(toView)\n        \n        UIView.animate(withDuration: self.transitionDuration(using: transitionContext), animations: { () -> Void in\n            \n            toView.alpha = 1.0\n            fromView.alpha = 0.0\n            \n            }, completion: {\n                _ in\n                fromView.alpha = 1.0\n                transitionContext.completeTransition(true)\n        })\n    }\n}\n"
  },
  {
    "path": "SubmitTransition/Classes/SpinerLayer.swift",
    "content": "import UIKit\n\n\nclass SpinerLayer: CAShapeLayer {\n    \n    var spinnerColor = UIColor.white {\n        didSet {\n            strokeColor = spinnerColor.cgColor\n        }\n    }\n    \n    init(frame:CGRect) {\n        super.init()\n        \n        let radius:CGFloat = (frame.height / 2) * 0.5\n        self.frame = CGRect(x: 0, y: 0, width: frame.height, height: frame.height)\n        \n        let center = CGPoint(x: frame.height / 2, y: bounds.center.y)\n        let startAngle = 0 - (Double.pi / 2)\n        let endAngle = Double.pi * 2 - (Double.pi / 2)\n        let clockwise: Bool = true\n        self.path = UIBezierPath(arcCenter: center, radius: radius, startAngle: CGFloat(startAngle), endAngle: CGFloat(endAngle), clockwise: clockwise).cgPath\n        \n        self.fillColor = nil\n        self.strokeColor = spinnerColor.cgColor\n        self.lineWidth = 1\n        \n        self.strokeEnd = 0.4\n        self.isHidden = true\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    func animation() {\n        self.isHidden = false\n        let rotate = CABasicAnimation(keyPath: \"transform.rotation.z\")\n        rotate.fromValue = 0\n        rotate.toValue = Double.pi * 2\n        rotate.duration = 0.4\n        rotate.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)\n        \n        rotate.repeatCount = HUGE\n        rotate.fillMode = CAMediaTimingFillMode.forwards\n        rotate.isRemovedOnCompletion = false\n        self.add(rotate, forKey: rotate.keyPath)\n        \n    }\n    \n    func stopAnimation() {\n        self.isHidden = true\n        self.removeAllAnimations()\n    }\n}\n"
  },
  {
    "path": "SubmitTransition/Classes/TimerEx.swift",
    "content": "//\n//  NSTimerEx.swift\n//  SubmitTransition\n//\n//  Created by Takuya Okamoto on 2015/08/06.\n//  Copyright (c) 2015年 Uniface. All rights reserved.\n//\n\nimport Foundation\nextension Timer {\n    @discardableResult class func schedule(delay: TimeInterval, handler: ((Timer?) -> Void)!) -> Timer! {\n        let fireDate = delay + CFAbsoluteTimeGetCurrent()\n        let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, 0, 0, 0, handler)\n        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, .commonModes)\n        return timer\n    }\n    @discardableResult class func schedule(repeatInterval interval: TimeInterval, handler: ((Timer?) -> Void)!) -> Timer! {\n        let fireDate = interval + CFAbsoluteTimeGetCurrent()\n        let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, interval, 0, 0, handler)\n        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, .commonModes)\n        return timer\n    }\n    \n    \n    /*class func schedule(delay delay: NSTimeInterval, handler: NSTimer! -> Void) -> NSTimer {\n     let fireDate = delay + CFAbsoluteTimeGetCurrent()\n     let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, 0, 0, 0, handler)\n     CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes)\n     return timer\n     }\n     \n     class func schedule(repeatInterval interval: NSTimeInterval, handler: NSTimer! -> Void) -> NSTimer {\n     let fireDate = interval + CFAbsoluteTimeGetCurrent()\n     let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, interval, 0, 0, handler)\n     CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes)\n     return timer\n     }*/\n}\n"
  },
  {
    "path": "SubmitTransition/Classes/TransitionSubmitButton.swift",
    "content": "import Foundation\nimport UIKit\n\n@IBDesignable\nopen class TKTransitionSubmitButton : UIButton, UIViewControllerTransitioningDelegate, CAAnimationDelegate {\n    \n    lazy var spiner: SpinerLayer! = {\n        let s = SpinerLayer(frame: self.frame)\n        return s\n    }()\n    \n    @IBInspectable open var spinnerColor: UIColor = UIColor.white {\n        didSet {\n            spiner.spinnerColor = spinnerColor\n        }\n    }\n    \n    open var didEndFinishAnimation : (()->())? = nil\n    \n    let springGoEase = CAMediaTimingFunction(controlPoints: 0.45, -0.36, 0.44, 0.92)\n    let shrinkCurve = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)\n    let expandCurve = CAMediaTimingFunction(controlPoints: 0.95, 0.02, 1, 0.05)\n    let shrinkDuration: CFTimeInterval  = 0.1\n    @IBInspectable open var normalCornerRadius:CGFloat = 0.0 {\n        didSet {\n            self.layer.cornerRadius = normalCornerRadius\n        }\n    }\n    \n    var cachedTitle: String?\n    var isAnimating = false\n\n    public override init(frame: CGRect) {\n        super.init(frame: frame)\n        self.setup()\n    }\n    \n    public required init!(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)!\n        self.setup()\n    }\n    \n    func setup() {\n        self.clipsToBounds = true\n        spiner.spinnerColor = spinnerColor\n    }\n    \n    open func startLoadingAnimation() {\n        self.isAnimating = true\n        self.cachedTitle = title(for: UIControl.State())\n        self.setTitle(\"\", for: UIControl.State())\n        self.layer.addSublayer(spiner)\n        \n        // Animate\n        self.cornerRadius()\n        self.shrink()\n        _ = Timer.schedule(delay: self.shrinkDuration - 0.25) { timer in\n            self.spiner.animation()\n        }\n    }\n    \n    open func startFinishAnimation(_ delay: TimeInterval, completion:(()->())?) {\n        self.isAnimating = true\n        _ = Timer.schedule(delay: delay) { timer in\n            self.didEndFinishAnimation = completion\n            self.expand()\n            self.spiner.stopAnimation()\n        }\n    }\n    \n    open func animate(_ duration: TimeInterval, completion:(()->())?) {\n        startLoadingAnimation()\n        startFinishAnimation(duration, completion: completion)\n    }\n    \n    open func setOriginalState() {\n        self.returnToOriginalState()\n        self.spiner.stopAnimation()\n    }\n    \n    public func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {\n        let a = anim as! CABasicAnimation\n        if a.keyPath == \"transform.scale\" {\n            didEndFinishAnimation?()\n            _ = Timer.schedule(delay: 1) { timer in\n                self.returnToOriginalState()\n            }\n        }\n    }\n    \n    open func returnToOriginalState() {\n        self.spiner.removeFromSuperlayer()\n        self.layer.removeAllAnimations()\n        self.setTitle(self.cachedTitle, for: UIControl.State())\n        self.spiner.stopAnimation()\n        self.isAnimating = false\n    }\n    \n    func cornerRadius() {\n        let cornerRadiusAnim = CABasicAnimation(keyPath: \"cornerRadius\")\n        // cornerRadiusAnim.fromValue = frame.width\n        cornerRadiusAnim.toValue = frame.height/2\n        cornerRadiusAnim.duration = shrinkDuration\n        cornerRadiusAnim.timingFunction = shrinkCurve\n        cornerRadiusAnim.fillMode = CAMediaTimingFillMode.forwards\n        cornerRadiusAnim.isRemovedOnCompletion = false\n        layer.add(cornerRadiusAnim, forKey: cornerRadiusAnim.keyPath)\n    }\n    \n    func shrink() {\n        let shrinkAnim = CABasicAnimation(keyPath: \"bounds.size.width\")\n        shrinkAnim.beginTime = CACurrentMediaTime() + 0.1\n        shrinkAnim.fromValue = frame.width\n        shrinkAnim.toValue = frame.height\n        shrinkAnim.duration = shrinkDuration\n        shrinkAnim.timingFunction = shrinkCurve\n        shrinkAnim.fillMode = CAMediaTimingFillMode.forwards\n        shrinkAnim.isRemovedOnCompletion = false\n        layer.add(shrinkAnim, forKey: shrinkAnim.keyPath)\n    }\n    \n    func expand() {\n        let expandAnim = CABasicAnimation(keyPath: \"transform.scale\")\n        expandAnim.fromValue = 1.0\n        expandAnim.toValue = 26.0\n        expandAnim.timingFunction = expandCurve\n        expandAnim.duration = 0.3\n        expandAnim.delegate = self\n        expandAnim.fillMode = CAMediaTimingFillMode.forwards\n        expandAnim.isRemovedOnCompletion = false\n        layer.add(expandAnim, forKey: expandAnim.keyPath)\n    }\n    \n}\n"
  },
  {
    "path": "SubmitTransition/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SubmitTransition/Images.xcassets/Home.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\",\n      \"filename\" : \"Home.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SubmitTransition/Images.xcassets/LaunchImage.launchimage/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"orientation\" : \"portrait\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"orientation\" : \"landscape\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"orientation\" : \"portrait\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"orientation\" : \"landscape\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SubmitTransition/Images.xcassets/Login.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\",\n      \"filename\" : \"Login.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SubmitTransition/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "SubmitTransition/SecondViewController.swift",
    "content": "//\n//  SecondViewController.swift\n//  SubmitTransition\n//\n//  Created by Takuya Okamoto on 2015/08/07.\n//  Copyright (c) 2015年 Uniface. All rights reserved.\n//\n\n\nimport UIKit\n\nclass SecondViewController: UIViewController {\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        let bg = UIImageView(image: UIImage(named: \"Home\"))\n        bg.frame = self.view.frame\n        self.view.addSubview(bg)\n        \n        let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(SecondViewController.onTapScreen))\n        bg.isUserInteractionEnabled = true\n        bg.addGestureRecognizer(tapRecognizer)\n    }\n    \n    @objc func onTapScreen() {\n        self.dismiss(animated: true, completion: nil)\n    }\n}\n\n"
  },
  {
    "path": "SubmitTransition/ViewController.swift",
    "content": "import UIKit\n\nclass ViewController: UIViewController, UIViewControllerTransitioningDelegate {\n    var btn: TKTransitionSubmitButton!\n\n    @IBOutlet weak var btnFromNib: TKTransitionSubmitButton!\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        UIApplication.shared.setStatusBarStyle(.lightContent, animated: false)\n        \n        let bg = UIImageView(image: UIImage(named: \"Login\"))\n        bg.frame = self.view.frame\n        self.view.addSubview(bg)\n\n        btn = TKTransitionSubmitButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width - 64, height: 44))\n        btn.center = self.view.center\n        btn.backgroundColor = .red\n        btn.frame.bottom = self.view.frame.height - 60\n        btn.setTitle(\"Sign in\", for: UIControl.State())\n        btn.titleLabel?.font = UIFont(name: \"HelveticaNeue-Light\", size: 14)\n        btn.addTarget(self, action: #selector(ViewController.onTapButton(_:)), for: UIControl.Event.touchUpInside)\n        self.view.addSubview(btn)\n\n        self.view.bringSubviewToFront(self.btnFromNib)\n    }\n\n    @IBAction func onTapButton(_ button: TKTransitionSubmitButton) {\n        button.animate(1, completion: { () -> () in\n            let secondVC = SecondViewController()\n            secondVC.transitioningDelegate = self\n            secondVC.modalPresentationStyle = .fullScreen\n            self.present(secondVC, animated: true, completion: nil)\n        })\n    }\n\n    // MARK: UIViewControllerTransitioningDelegate\n    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {\n        return TKFadeInAnimator(transitionDuration: 0.5, startingAlpha: 0.8)\n    }\n    \n    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {\n        return nil\n    }\n}\n\n"
  },
  {
    "path": "SubmitTransition.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tB00C1CC21B7495FC00412E02 /* SecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00C1CC11B7495FC00412E02 /* SecondViewController.swift */; };\n\t\tB0FAC85E1B7356F40034E00B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC85D1B7356F40034E00B /* AppDelegate.swift */; };\n\t\tB0FAC8601B7356F40034E00B /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC85F1B7356F40034E00B /* ViewController.swift */; };\n\t\tB0FAC8631B7356F40034E00B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0FAC8611B7356F40034E00B /* Main.storyboard */; };\n\t\tB0FAC8651B7356F40034E00B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B0FAC8641B7356F40034E00B /* Images.xcassets */; };\n\t\tB0FAC8681B7356F40034E00B /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = B0FAC8661B7356F40034E00B /* LaunchScreen.xib */; };\n\t\tB0FAC8741B7356F40034E00B /* SubmitTransitionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC8731B7356F40034E00B /* SubmitTransitionTests.swift */; };\n\t\tB0FAC87F1B7359000034E00B /* TransitionSubmitButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC87E1B7359000034E00B /* TransitionSubmitButton.swift */; };\n\t\tB0FAC8851B736C460034E00B /* TimerEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC8841B736C460034E00B /* TimerEx.swift */; };\n\t\tB0FAC8871B7440190034E00B /* CGRectEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC8861B7440190034E00B /* CGRectEx.swift */; };\n\t\tB0FAC8891B744FB10034E00B /* SpinerLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC8881B744FB10034E00B /* SpinerLayer.swift */; };\n\t\tB0FAC88B1B747F990034E00B /* FadeTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0FAC88A1B747F990034E00B /* FadeTransition.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tB0FAC86E1B7356F40034E00B /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = B0FAC8501B7356F30034E00B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = B0FAC8571B7356F30034E00B;\n\t\t\tremoteInfo = SubmitTransition;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\tB00C1CC11B7495FC00412E02 /* SecondViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecondViewController.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC8581B7356F30034E00B /* SubmitTransition.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SubmitTransition.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tB0FAC85C1B7356F30034E00B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tB0FAC85D1B7356F40034E00B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC85F1B7356F40034E00B /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC8621B7356F40034E00B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\tB0FAC8641B7356F40034E00B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\tB0FAC8671B7356F40034E00B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\tB0FAC86D1B7356F40034E00B /* SubmitTransitionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SubmitTransitionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tB0FAC8721B7356F40034E00B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tB0FAC8731B7356F40034E00B /* SubmitTransitionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubmitTransitionTests.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC87E1B7359000034E00B /* TransitionSubmitButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransitionSubmitButton.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC8841B736C460034E00B /* TimerEx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimerEx.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC8861B7440190034E00B /* CGRectEx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGRectEx.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC8881B744FB10034E00B /* SpinerLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpinerLayer.swift; sourceTree = \"<group>\"; };\n\t\tB0FAC88A1B747F990034E00B /* FadeTransition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FadeTransition.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tB0FAC8551B7356F30034E00B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tB0FAC86A1B7356F40034E00B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tB0FAC84F1B7356F30034E00B = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC85A1B7356F30034E00B /* SubmitTransition */,\n\t\t\t\tB0FAC8701B7356F40034E00B /* SubmitTransitionTests */,\n\t\t\t\tB0FAC8591B7356F30034E00B /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC8591B7356F30034E00B /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC8581B7356F30034E00B /* SubmitTransition.app */,\n\t\t\t\tB0FAC86D1B7356F40034E00B /* SubmitTransitionTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC85A1B7356F30034E00B /* SubmitTransition */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC87D1B7358C90034E00B /* Classes */,\n\t\t\t\tB0FAC85D1B7356F40034E00B /* AppDelegate.swift */,\n\t\t\t\tB0FAC85F1B7356F40034E00B /* ViewController.swift */,\n\t\t\t\tB00C1CC11B7495FC00412E02 /* SecondViewController.swift */,\n\t\t\t\tB0FAC8611B7356F40034E00B /* Main.storyboard */,\n\t\t\t\tB0FAC8641B7356F40034E00B /* Images.xcassets */,\n\t\t\t\tB0FAC8661B7356F40034E00B /* LaunchScreen.xib */,\n\t\t\t\tB0FAC85B1B7356F30034E00B /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = SubmitTransition;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC85B1B7356F30034E00B /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC85C1B7356F30034E00B /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC8701B7356F40034E00B /* SubmitTransitionTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC8731B7356F40034E00B /* SubmitTransitionTests.swift */,\n\t\t\t\tB0FAC8711B7356F40034E00B /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = SubmitTransitionTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC8711B7356F40034E00B /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC8721B7356F40034E00B /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC87D1B7358C90034E00B /* Classes */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC87E1B7359000034E00B /* TransitionSubmitButton.swift */,\n\t\t\t\tB0FAC8881B744FB10034E00B /* SpinerLayer.swift */,\n\t\t\t\tB0FAC88A1B747F990034E00B /* FadeTransition.swift */,\n\t\t\t\tB0FAC8861B7440190034E00B /* CGRectEx.swift */,\n\t\t\t\tB0FAC8841B736C460034E00B /* TimerEx.swift */,\n\t\t\t);\n\t\t\tpath = Classes;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tB0FAC8571B7356F30034E00B /* SubmitTransition */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = B0FAC8771B7356F40034E00B /* Build configuration list for PBXNativeTarget \"SubmitTransition\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tB0FAC8541B7356F30034E00B /* Sources */,\n\t\t\t\tB0FAC8551B7356F30034E00B /* Frameworks */,\n\t\t\t\tB0FAC8561B7356F30034E00B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = SubmitTransition;\n\t\t\tproductName = SubmitTransition;\n\t\t\tproductReference = B0FAC8581B7356F30034E00B /* SubmitTransition.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tB0FAC86C1B7356F40034E00B /* SubmitTransitionTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = B0FAC87A1B7356F40034E00B /* Build configuration list for PBXNativeTarget \"SubmitTransitionTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tB0FAC8691B7356F40034E00B /* Sources */,\n\t\t\t\tB0FAC86A1B7356F40034E00B /* Frameworks */,\n\t\t\t\tB0FAC86B1B7356F40034E00B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tB0FAC86F1B7356F40034E00B /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = SubmitTransitionTests;\n\t\t\tproductName = SubmitTransitionTests;\n\t\t\tproductReference = B0FAC86D1B7356F40034E00B /* SubmitTransitionTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tB0FAC8501B7356F30034E00B /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftMigration = 0700;\n\t\t\t\tLastSwiftUpdateCheck = 0700;\n\t\t\t\tLastUpgradeCheck = 1030;\n\t\t\t\tORGANIZATIONNAME = Uniface;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tB0FAC8571B7356F30034E00B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.4;\n\t\t\t\t\t\tLastSwiftMigration = 1030;\n\t\t\t\t\t};\n\t\t\t\t\tB0FAC86C1B7356F40034E00B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.4;\n\t\t\t\t\t\tLastSwiftMigration = 1030;\n\t\t\t\t\t\tTestTargetID = B0FAC8571B7356F30034E00B;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = B0FAC8531B7356F30034E00B /* Build configuration list for PBXProject \"SubmitTransition\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = B0FAC84F1B7356F30034E00B;\n\t\t\tproductRefGroup = B0FAC8591B7356F30034E00B /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tB0FAC8571B7356F30034E00B /* SubmitTransition */,\n\t\t\t\tB0FAC86C1B7356F40034E00B /* SubmitTransitionTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tB0FAC8561B7356F30034E00B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tB0FAC8631B7356F40034E00B /* Main.storyboard in Resources */,\n\t\t\t\tB0FAC8681B7356F40034E00B /* LaunchScreen.xib in Resources */,\n\t\t\t\tB0FAC8651B7356F40034E00B /* Images.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tB0FAC86B1B7356F40034E00B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tB0FAC8541B7356F30034E00B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tB00C1CC21B7495FC00412E02 /* SecondViewController.swift in Sources */,\n\t\t\t\tB0FAC8891B744FB10034E00B /* SpinerLayer.swift in Sources */,\n\t\t\t\tB0FAC88B1B747F990034E00B /* FadeTransition.swift in Sources */,\n\t\t\t\tB0FAC8601B7356F40034E00B /* ViewController.swift in Sources */,\n\t\t\t\tB0FAC8871B7440190034E00B /* CGRectEx.swift in Sources */,\n\t\t\t\tB0FAC85E1B7356F40034E00B /* AppDelegate.swift in Sources */,\n\t\t\t\tB0FAC8851B736C460034E00B /* TimerEx.swift in Sources */,\n\t\t\t\tB0FAC87F1B7359000034E00B /* TransitionSubmitButton.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tB0FAC8691B7356F40034E00B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tB0FAC8741B7356F40034E00B /* SubmitTransitionTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tB0FAC86F1B7356F40034E00B /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = B0FAC8571B7356F30034E00B /* SubmitTransition */;\n\t\t\ttargetProxy = B0FAC86E1B7356F40034E00B /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\tB0FAC8611B7356F40034E00B /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC8621B7356F40034E00B /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB0FAC8661B7356F40034E00B /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tB0FAC8671B7356F40034E00B /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tB0FAC8751B7356F40034E00B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.4;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tB0FAC8761B7356F40034E00B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.4;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tB0FAC8781B7356F40034E00B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tINFOPLIST_FILE = SubmitTransition/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.twitter.tk-365.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tB0FAC8791B7356F40034E00B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tINFOPLIST_FILE = SubmitTransition/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.twitter.tk-365.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tB0FAC87B1B7356F40034E00B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = SubmitTransitionTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.twitter.tk-365.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/SubmitTransition.app/SubmitTransition\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tB0FAC87C1B7356F40034E00B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = SubmitTransitionTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.twitter.tk-365.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/SubmitTransition.app/SubmitTransition\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tB0FAC8531B7356F30034E00B /* Build configuration list for PBXProject \"SubmitTransition\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tB0FAC8751B7356F40034E00B /* Debug */,\n\t\t\t\tB0FAC8761B7356F40034E00B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tB0FAC8771B7356F40034E00B /* Build configuration list for PBXNativeTarget \"SubmitTransition\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tB0FAC8781B7356F40034E00B /* Debug */,\n\t\t\t\tB0FAC8791B7356F40034E00B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tB0FAC87A1B7356F40034E00B /* Build configuration list for PBXNativeTarget \"SubmitTransitionTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tB0FAC87B1B7356F40034E00B /* Debug */,\n\t\t\t\tB0FAC87C1B7356F40034E00B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = B0FAC8501B7356F30034E00B /* Project object */;\n}\n"
  },
  {
    "path": "SubmitTransition.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:SubmitTransition.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "SubmitTransition.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "SubmitTransitionTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "SubmitTransitionTests/SubmitTransitionTests.swift",
    "content": "//\n//  SubmitTransitionTests.swift\n//  SubmitTransitionTests\n//\n//  Created by Takuya Okamoto on 2015/08/06.\n//  Copyright (c) 2015年 Uniface. All rights reserved.\n//\n\nimport UIKit\nimport XCTest\n\nclass SubmitTransitionTests: XCTestCase {\n    \n    override func setUp() {\n        super.setUp()\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n    }\n    \n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n    \n    func testExample() {\n        // This is an example of a functional test case.\n        XCTAssert(true, \"Pass\")\n    }\n    \n    func testPerformanceExample() {\n        // This is an example of a performance test case.\n        self.measure() {\n            // Put the code you want to measure the time of here.\n        }\n    }\n    \n}\n"
  },
  {
    "path": "TKSubmitTransition.podspec",
    "content": "#\n#  Be sure to run `pod spec lint TKSubmitTransition.podspec' to ensure this is a\n#  valid spec and to remove all comments including this before submitting the spec.\n#\n#  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html\n#  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/\n#\n\nPod::Spec.new do |s|\n\n  # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  These will help people to find your library, and whilst it\n  #  can feel like a chore to fill in it's definitely to your advantage. The\n  #  summary should be tweet-length, and the description more in depth.\n  #\n\n  s.name         = \"TKSubmitTransition\"\n  s.version      = \"3.1.1\"\n  s.summary      = \"Animated UIButton of Loading Animation and Transition Animation. Inspired by https://dribbble.com/shots/1945593-Login-Home-Screen\"\n\n  # s.description  = <<-DESC\n  #                  Animated UIButton of Loading Animation and Transition Animation. Inspired by https://dribbble.com/shots/1945593-Login-Home-Screen\n  #                  DESC\n\n  s.homepage     = \"https://github.com/entotsu/TKSubmitTransition\"\n  # s.screenshots  = \"www.example.com/screenshots_1.gif\", \"www.example.com/screenshots_2.gif\"\n\n\n  # ―――  Spec License  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  Licensing your code is important. See http://choosealicense.com for more info.\n  #  CocoaPods will detect a license file if there is a named LICENSE*\n  #  Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.\n  #\n\n  # s.license      = \"MIT (example)\"\n  s.license      = { :type => \"MIT\", :file => \"LICENSE\" }\n\n\n  # ――― Author Metadata  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  Specify the authors of the library, with email addresses. Email addresses\n  #  of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also\n  #  accepts just a name if you'd rather not provide an email address.\n  #\n  #  Specify a social_media_url where others can refer to, for example a twitter\n  #  profile URL.\n  #\n\n  s.author             = { \"Takuya.Okamoto\" => \"blackn.red42@gmail.com\" }\n  # Or just: s.author    = \"Takuya.Okamoto\"\n  # s.authors            = { \"Takuya.Okamoto\" => \"blackn.red42@gmail.com\" }\n  # s.social_media_url   = \"http://twitter.com/Takuya.Okamoto\"\n\n  # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  If this Pod runs only on iOS or OS X, then specify the platform and\n  #  the deployment target. You can optionally include the target after the platform.\n  #\n\n  # s.platform     = :ios\n  s.platform     = :ios, \"8.0\"\n\n  #  When using multiple platforms\n  # s.ios.deployment_target = \"5.0\"\n  # s.osx.deployment_target = \"10.7\"\n\n\n  # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  Specify the location from where the source should be retrieved.\n  #  Supports git, hg, bzr, svn and HTTP.\n  #\n\n  s.source       = { :git => \"https://github.com/entotsu/TKSubmitTransition.git\", :tag => s.version.to_s }\n  s.swift_version = '5.0'  \n\n  # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  CocoaPods is smart about how it includes source code. For source files\n  #  giving a folder will include any swift, h, m, mm, c & cpp files.\n  #  For header files it will include any header in the folder.\n  #  Not including the public_header_files will make all headers public.\n  #\n\n  s.source_files  = \"Classes\", \"SubmitTransition/Classes/*.swift\"\n  # s.exclude_files = \"Classes/Exclude\"\n\n  # s.public_header_files = \"Classes/**/*.h\"\n\n\n  # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  A list of resources included with the Pod. These are copied into the\n  #  target bundle with a build phase script. Anything else will be cleaned.\n  #  You can preserve files from being cleaned, please don't preserve\n  #  non-essential files like tests, examples and documentation.\n  #\n\n  # s.resource  = \"icon.png\"\n  # s.resources = \"Resources/*.png\"\n\n  # s.preserve_paths = \"FilesToSave\", \"MoreFilesToSave\"\n\n\n  # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  Link your library with frameworks, or libraries. Libraries do not include\n  #  the lib prefix of their name.\n  #\n\n  # s.framework  = \"SomeFramework\"\n  # s.frameworks = \"SomeFramework\", \"AnotherFramework\"\n\n  # s.library   = \"iconv\"\n  # s.libraries = \"iconv\", \"xml2\"\n\n\n  # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n  #\n  #  If your library depends on compiler flags you can set them in the xcconfig hash\n  #  where they will only apply to your library. If you depend on other Podspecs\n  #  you can include multiple dependencies to ensure it works.\n\n  # s.requires_arc = true\n\n  # s.xcconfig = { \"HEADER_SEARCH_PATHS\" => \"$(SDKROOT)/usr/include/libxml2\" }\n  # s.dependency \"JSONKit\", \"~> 1.4\"\n\nend\n"
  }
]