diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8858389 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +*.mode1 +*.mode1v3 +*.mode2v3 +*.perspective +*.perspectivev3 +*.pbxuser +*.xccheckout +xcuserdata +build/ +*.o +*.LinkFileList +*.hmap +*~.nib/ +*.swp +*~ +*.dat +*.dep diff --git a/README.md b/README.md index 4c846ea..4758cc0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ - + -Adds performant animated GIF support to UIKit, without subclassing `UIImageView`. Check out the __[demo](#demo-app)__. If you're looking for the Japanese prefecture, click [here](https://goo.gl/maps/CCeAc). +Adds performant animated GIF support to UIKit, without subclassing `UIImageView`. If you're looking for the Japanese prefecture, click [here](https://goo.gl/maps/CCeAc). #### Why? @@ -17,7 +17,7 @@ The figure below summarizes how this works in practice. Given an image containing 10 frames, Gifu will load the current frame (red), pre-load the next two frames in this example (orange), and nullify all the other frames to free up memory (gray): - + #### Usage @@ -42,9 +42,7 @@ The `isAnimating()` method returns the current animation state of the view. #### Demo App -For an example, check out the demo app [here](https://github.com/kaishin/gifu/tree/demo) (requires Xcode 6). - - + #### Compatibility diff --git a/demo/Images.xcassets/AppIcon.appiconset/Contents.json b/demo/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..171085b --- /dev/null +++ b/demo/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "New icon-Small@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "New icon-Small-40@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "New icon-60@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/demo/Images.xcassets/AppIcon.appiconset/New icon-60@2x.png b/demo/Images.xcassets/AppIcon.appiconset/New icon-60@2x.png new file mode 100644 index 0000000..e63b93d Binary files /dev/null and b/demo/Images.xcassets/AppIcon.appiconset/New icon-60@2x.png differ diff --git a/demo/Images.xcassets/AppIcon.appiconset/New icon-Small-40@2x.png b/demo/Images.xcassets/AppIcon.appiconset/New icon-Small-40@2x.png new file mode 100644 index 0000000..b589c73 Binary files /dev/null and b/demo/Images.xcassets/AppIcon.appiconset/New icon-Small-40@2x.png differ diff --git a/demo/Images.xcassets/AppIcon.appiconset/New icon-Small@2x.png b/demo/Images.xcassets/AppIcon.appiconset/New icon-Small@2x.png new file mode 100644 index 0000000..e96abd5 Binary files /dev/null and b/demo/Images.xcassets/AppIcon.appiconset/New icon-Small@2x.png differ diff --git a/demo/Images.xcassets/LaunchImage.launchimage/Contents.json b/demo/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..c79ebd3 --- /dev/null +++ b/demo/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "subtype" : "retina4", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/demo/Info.plist b/demo/Info.plist new file mode 100644 index 0000000..8506ad1 --- /dev/null +++ b/demo/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + co.kaishin.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + UIViewControllerBasedStatusBarAppearance + + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/demo/Main.storyboard b/demo/Main.storyboard new file mode 100644 index 0000000..93307c3 --- /dev/null +++ b/demo/Main.storyboard @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/classes/AppDelegate.swift b/demo/classes/AppDelegate.swift new file mode 100644 index 0000000..f9d74e6 --- /dev/null +++ b/demo/classes/AppDelegate.swift @@ -0,0 +1,12 @@ +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + return true + } +} + diff --git a/demo/classes/FlatButton.swift b/demo/classes/FlatButton.swift new file mode 100644 index 0000000..f9af111 --- /dev/null +++ b/demo/classes/FlatButton.swift @@ -0,0 +1,48 @@ +import UIKit + +class FlatButton: UIButton { + + let horizontalPadding: CGFloat = 14.0 + + var buttonColor: UIColor? + + override init(frame: CGRect) { + super.init(frame: frame) + customizeAppearance() + } + + required init(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + customizeAppearance() + } + + override func drawRect(rect: CGRect) { + layer.borderColor = tintColor.CGColor + setTitleColor(tintColor, forState: UIControlState.Normal) + setTitleColor(UIColor.whiteColor(), forState: UIControlState.Selected) + } + + func customizeAppearance() { + let containsEdgeInsets = !UIEdgeInsetsEqualToEdgeInsets(contentEdgeInsets, UIEdgeInsetsZero) + contentEdgeInsets = containsEdgeInsets ? contentEdgeInsets : UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) + layer.borderWidth = 2.0 + layer.borderColor = tintColor.CGColor + layer.cornerRadius = frame.size.height / 2.0 + layer.masksToBounds = true + } + + override var tintColor: UIColor! { + get { + if let color = buttonColor { + return color + } else { + return super.tintColor + } + } + + set { + super.tintColor = newValue + buttonColor = newValue + } + } +} \ No newline at end of file diff --git a/demo/classes/ViewController.swift b/demo/classes/ViewController.swift new file mode 100644 index 0000000..cd13883 --- /dev/null +++ b/demo/classes/ViewController.swift @@ -0,0 +1,27 @@ +import UIKit + +class ViewController: UIViewController { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var button: FlatButton! + + override func viewDidLoad() { + super.viewDidLoad() + imageView.setAnimatableImage(named: "mugen.gif") + imageView.startAnimating() + UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false) + } + + @IBAction func toggleAnimation(button: UIButton) { + if imageView.isAnimating { + imageView.stopAnimating() + button.layer.backgroundColor = UIColor.whiteColor().CGColor + button.setTitleColor(UIColor.blackColor(), forState: .Normal) + } else { + imageView.startAnimating() + button.layer.backgroundColor = UIColor.clearColor().CGColor + button.setTitleColor(UIColor.whiteColor(), forState: .Normal) + } + } +} + diff --git a/demo/mugen.gif b/demo/mugen.gif new file mode 100644 index 0000000..da7622f Binary files /dev/null and b/demo/mugen.gif differ diff --git a/figure.gif b/figure.gif deleted file mode 100644 index 28cbf19..0000000 Binary files a/figure.gif and /dev/null differ diff --git a/gifu-demo.xcodeproj/project.pbxproj b/gifu-demo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1afb566 --- /dev/null +++ b/gifu-demo.xcodeproj/project.pbxproj @@ -0,0 +1,304 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9D25870819BCCB0F00A55A18 /* mugen.gif in Resources */ = {isa = PBXBuildFile; fileRef = 9D25870619BCCB0F00A55A18 /* mugen.gif */; }; + 9D25870C19BD16FC00A55A18 /* Gifu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D25870919BD16FC00A55A18 /* Gifu.swift */; }; + 9D25870D19BD16FC00A55A18 /* ImageSourceHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D25870A19BD16FC00A55A18 /* ImageSourceHelpers.swift */; }; + 9D25870E19BD16FC00A55A18 /* UIImageView+Gifu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D25870B19BD16FC00A55A18 /* UIImageView+Gifu.swift */; }; + 9D98823D19BC69CA00B790C6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D98823C19BC69CA00B790C6 /* AppDelegate.swift */; }; + 9D98823F19BC69CA00B790C6 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D98823E19BC69CA00B790C6 /* ViewController.swift */; }; + 9D98824419BC69CA00B790C6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D98824319BC69CA00B790C6 /* Images.xcassets */; }; + 9D98825A19BC69F600B790C6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9D98825919BC69F600B790C6 /* Main.storyboard */; }; + 9D98826719BC874C00B790C6 /* FlatButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D98826619BC874C00B790C6 /* FlatButton.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 9D25870519BCCB0F00A55A18 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9D25870619BCCB0F00A55A18 /* mugen.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mugen.gif; sourceTree = ""; }; + 9D25870919BD16FC00A55A18 /* Gifu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Gifu.swift; sourceTree = ""; }; + 9D25870A19BD16FC00A55A18 /* ImageSourceHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageSourceHelpers.swift; sourceTree = ""; }; + 9D25870B19BD16FC00A55A18 /* UIImageView+Gifu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImageView+Gifu.swift"; sourceTree = ""; }; + 9D98823719BC69CA00B790C6 /* gifu-demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "gifu-demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9D98823C19BC69CA00B790C6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = classes/AppDelegate.swift; sourceTree = ""; }; + 9D98823E19BC69CA00B790C6 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ViewController.swift; path = classes/ViewController.swift; sourceTree = ""; }; + 9D98824319BC69CA00B790C6 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 9D98825919BC69F600B790C6 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + 9D98826619BC874C00B790C6 /* FlatButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FlatButton.swift; path = classes/FlatButton.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9D98823419BC69CA00B790C6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9D98822E19BC69CA00B790C6 = { + isa = PBXGroup; + children = ( + 9D98823919BC69CA00B790C6 /* gifu-demo */, + 9D98823819BC69CA00B790C6 /* Products */, + ); + sourceTree = ""; + }; + 9D98823819BC69CA00B790C6 /* Products */ = { + isa = PBXGroup; + children = ( + 9D98823719BC69CA00B790C6 /* gifu-demo.app */, + ); + name = Products; + sourceTree = ""; + }; + 9D98823919BC69CA00B790C6 /* gifu-demo */ = { + isa = PBXGroup; + children = ( + 9D98826119BC6A9700B790C6 /* Gifu */, + 9D98823C19BC69CA00B790C6 /* AppDelegate.swift */, + 9D98823E19BC69CA00B790C6 /* ViewController.swift */, + 9D98826619BC874C00B790C6 /* FlatButton.swift */, + 9D98825919BC69F600B790C6 /* Main.storyboard */, + 9D98824319BC69CA00B790C6 /* Images.xcassets */, + 9D98823A19BC69CA00B790C6 /* Supporting Files */, + ); + name = "gifu-demo"; + path = demo; + sourceTree = ""; + }; + 9D98823A19BC69CA00B790C6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9D25870519BCCB0F00A55A18 /* Info.plist */, + 9D25870619BCCB0F00A55A18 /* mugen.gif */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 9D98826119BC6A9700B790C6 /* Gifu */ = { + isa = PBXGroup; + children = ( + 9D25870919BD16FC00A55A18 /* Gifu.swift */, + 9D25870A19BD16FC00A55A18 /* ImageSourceHelpers.swift */, + 9D25870B19BD16FC00A55A18 /* UIImageView+Gifu.swift */, + ); + name = Gifu; + path = ../source; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9D98823619BC69CA00B790C6 /* gifu-demo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9D98825319BC69CA00B790C6 /* Build configuration list for PBXNativeTarget "gifu-demo" */; + buildPhases = ( + 9D98823319BC69CA00B790C6 /* Sources */, + 9D98823419BC69CA00B790C6 /* Frameworks */, + 9D98823519BC69CA00B790C6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gifu-demo"; + productName = "gifu-demo"; + productReference = 9D98823719BC69CA00B790C6 /* gifu-demo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9D98822F19BC69CA00B790C6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0600; + ORGANIZATIONNAME = "Kaishin & Co"; + TargetAttributes = { + 9D98823619BC69CA00B790C6 = { + CreatedOnToolsVersion = 6.0; + }; + }; + }; + buildConfigurationList = 9D98823219BC69CA00B790C6 /* Build configuration list for PBXProject "gifu-demo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9D98822E19BC69CA00B790C6; + productRefGroup = 9D98823819BC69CA00B790C6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9D98823619BC69CA00B790C6 /* gifu-demo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9D98823519BC69CA00B790C6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9D98824419BC69CA00B790C6 /* Images.xcassets in Resources */, + 9D25870819BCCB0F00A55A18 /* mugen.gif in Resources */, + 9D98825A19BC69F600B790C6 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9D98823319BC69CA00B790C6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9D25870C19BD16FC00A55A18 /* Gifu.swift in Sources */, + 9D25870D19BD16FC00A55A18 /* ImageSourceHelpers.swift in Sources */, + 9D98823F19BC69CA00B790C6 /* ViewController.swift in Sources */, + 9D25870E19BD16FC00A55A18 /* UIImageView+Gifu.swift in Sources */, + 9D98823D19BC69CA00B790C6 /* AppDelegate.swift in Sources */, + 9D98826719BC874C00B790C6 /* FlatButton.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 9D98825119BC69CA00B790C6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9D98825219BC69CA00B790C6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9D98825419BC69CA00B790C6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + INFOPLIST_FILE = demo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 9D98825519BC69CA00B790C6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + INFOPLIST_FILE = demo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9D98823219BC69CA00B790C6 /* Build configuration list for PBXProject "gifu-demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9D98825119BC69CA00B790C6 /* Debug */, + 9D98825219BC69CA00B790C6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9D98825319BC69CA00B790C6 /* Build configuration list for PBXNativeTarget "gifu-demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9D98825419BC69CA00B790C6 /* Debug */, + 9D98825519BC69CA00B790C6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9D98822F19BC69CA00B790C6 /* Project object */; +} diff --git a/gifu-demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/gifu-demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..8e593f5 --- /dev/null +++ b/gifu-demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/gifu-demo.xcodeproj/project.xcworkspace/xcshareddata/gifu-demo.xccheckout b/gifu-demo.xcodeproj/project.xcworkspace/xcshareddata/gifu-demo.xccheckout new file mode 100644 index 0000000..d5bcfd3 --- /dev/null +++ b/gifu-demo.xcodeproj/project.xcworkspace/xcshareddata/gifu-demo.xccheckout @@ -0,0 +1,53 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 6D75083F-F54B-476A-805A-7C4AECACA1D4 + IDESourceControlProjectName + gifu-demo + IDESourceControlProjectOriginsDictionary + + 4F201322DFCBE25D8D43B7E20BE17D99A7146515 + /Users/reda/Developer/iOS/gifu + EA0259997B7ABC22E2A236D9C38DE21665A9128B + github.com:kaishin/gifu-demo.git + + IDESourceControlProjectPath + gifu-demo.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + 4F201322DFCBE25D8D43B7E20BE17D99A7146515 + ../../../gifu + EA0259997B7ABC22E2A236D9C38DE21665A9128B + ../.. + + IDESourceControlProjectURL + github.com:kaishin/gifu-demo.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + EA0259997B7ABC22E2A236D9C38DE21665A9128B + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 4F201322DFCBE25D8D43B7E20BE17D99A7146515 + IDESourceControlWCCName + gifu + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + EA0259997B7ABC22E2A236D9C38DE21665A9128B + IDESourceControlWCCName + gifu-demo + + + + diff --git a/gifu-demo.xcodeproj/xcuserdata/reda.xcuserdatad/xcschemes/gifu-demo.xcscheme b/gifu-demo.xcodeproj/xcuserdata/reda.xcuserdatad/xcschemes/gifu-demo.xcscheme new file mode 100644 index 0000000..668b760 --- /dev/null +++ b/gifu-demo.xcodeproj/xcuserdata/reda.xcuserdatad/xcschemes/gifu-demo.xcscheme @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gifu-demo.xcodeproj/xcuserdata/reda.xcuserdatad/xcschemes/xcschememanagement.plist b/gifu-demo.xcodeproj/xcuserdata/reda.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..fc5689b --- /dev/null +++ b/gifu-demo.xcodeproj/xcuserdata/reda.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + gifu-demo.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9D98823619BC69CA00B790C6 + + primary + + + 9D98824819BC69CA00B790C6 + + primary + + + + + diff --git a/logo.svg b/logo.svg deleted file mode 100644 index 40c7902..0000000 --- a/logo.svg +++ /dev/null @@ -1 +0,0 @@ -logo