diff --git a/Demo/Demo.xcodeproj/project.pbxproj b/Demo/Demo.xcodeproj/project.pbxproj
index b49d815..71b8009 100755
--- a/Demo/Demo.xcodeproj/project.pbxproj
+++ b/Demo/Demo.xcodeproj/project.pbxproj
@@ -128,7 +128,7 @@
9D98823619BC69CA00B790C6 = {
CreatedOnToolsVersion = 6.0;
LastSwiftMigration = 0800;
- ProvisioningStyle = Manual;
+ ProvisioningStyle = Automatic;
};
};
};
@@ -267,12 +267,15 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
INFOPLIST_FILE = "Source/Supporting Files/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = co.kaishin.gifu.demo;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = 1;
};
@@ -282,12 +285,15 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
INFOPLIST_FILE = "Source/Supporting Files/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = co.kaishin.gifu.demo;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = 1;
diff --git a/Gifu.podspec b/Gifu.podspec
index 58dc0a9..b58e6ff 100644
--- a/Gifu.podspec
+++ b/Gifu.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "Gifu"
- s.version = "2.0.0"
+ s.version = "2.0.1"
s.summary = "High-performance animated GIF support for iOS "
s.homepage = "https://github.com/kaishin/Gifu"
s.social_media_url = "http://twitter.com/kaishin"
diff --git a/Supporting Files/Info.plist b/Supporting Files/Info.plist
index db16e4b..b08deca 100644
--- a/Supporting Files/Info.plist
+++ b/Supporting Files/Info.plist
@@ -15,11 +15,11 @@
A view object that implements the GIFAnimatable
protocol.
A new animator instance.
-The delegated layer.
-The file name of the GIF in the main bundle.
-Desired number of loops, <= 0 for infinite loop.
-GIF image data.
-Desired number of loops, <= 0 for infinite loop.
-The file name of the GIF in the main bundle.
-Desired number of loops, <= 0 for infinite loop.
-GIF image data.
-Desired number of loops, <= 0 for infinite loop.
-Boolean value indicating whether individual frames should be resized.
-The number of frames to buffer.
-A view object that implements the GIFAnimatable
protocol.
A new animator instance.
-The delegated layer.
-The file name of the GIF in the main bundle.
-Desired number of loops, <= 0 for infinite loop.
-GIF image data.
-Desired number of loops, <= 0 for infinite loop.
-The file name of the GIF in the main bundle.
-Desired number of loops, <= 0 for infinite loop.
-GIF image data.
-Desired number of loops, <= 0 for infinite loop.
-Boolean value indicating whether individual frames should be resized.
-The number of frames to buffer.
-Gifu adds protocol-based, performance-aware animated GIF support to UIKit. (It’s also a prefecture in Japan).
⚠ Swift 2.3 support is on the swift2.3 branch which will not be getting any future updates.
-github "kaishin/Gifu"
pod 'Gifu'
use_frameworks!
pod install
with CocoaPods 0.36 or newer.Gifu
does not require using the built-in GIFImageView
subclass. The Animator
class does the heavy-lifting, while the GIFAnimatable
protocol exposes the functionality to the view classes that conform to it, using protocol extensions.
There are two options that should cover any situation:
@@ -97,7 +97,7 @@GIFImageView
subclass if you don’t need to combine GIF support with another image library.GIFAnimatable
. In practice, any UIView
subclass would do, since you get most of the required properties for free. For best results, make your UIImageView
subclass conform to GIFAnimatable
to get access to other features such as intrinsic content size.The bread and butter of Gifu. Through protocol extensions, GIFAnimatable
exposes all the APIs of the library, and with very little boilerplate, any class can conform to it.
class MyImageView: UIImageView, GIFAnimatable {
@@ -164,7 +164,7 @@
}
}
-The simplest way to get started is initializing a GIFAnimatable
class in code or in a storyboard, then calling animate(:)
on it.
let imageView = GIFImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
@@ -194,20 +194,20 @@
imageView.prepareForReuse()
}
-Clone or download the repository and open Gifu.xcworkspace
to check out the demo app.
See the full API documentation.
-See LICENSE.
@@ -215,7 +215,7 @@Used for displaying the animation frames.
","parent_name":"ImageContainer"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable8animatorGSqCS_8Animator_":{"name":"animator","abstract":"Responsible for managing the animation frames.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable5layerCSo7CALayer":{"name":"layer","abstract":"Notifies the instance that it needs display.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable5frameVSC6CGRect":{"name":"frame","abstract":"View frame used for resizing the frames.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable11contentModeOSC17UIViewContentMode":{"name":"contentMode","abstract":"Content mode used for resizing the frames.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:ve4GifuRxS_13GIFAnimatablexS_14ImageContainerrS0_20intrinsicContentSizeVSC6CGSize":{"name":"intrinsicContentSize","abstract":"Returns the intrinsic content size based on the size of the image.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable15gifLoopDurationSd":{"name":"gifLoopDuration","abstract":"Total duration of one animation loop
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable11activeFrameGSqCSo7UIImage_":{"name":"activeFrame","abstract":"Returns the active frame if available.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable10frameCountSi":{"name":"frameCount","abstract":"Total frame count of the GIF.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable14isAnimatingGIFSb":{"name":"isAnimatingGIF","abstract":"Introspect whether the instance is animating.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable7animateFT12withGIFNamedSS9loopCountSi_T_":{"name":"animate(withGIFNamed:loopCount:)","abstract":"Prepare for animation and start animating immediately.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable7animateFT11withGIFDataV10Foundation4Data9loopCountSi_T_":{"name":"animate(withGIFData:loopCount:)","abstract":"Prepare for animation and start animating immediately.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable19prepareForAnimationFT12withGIFNamedSS9loopCountSi17completionHandlerGSqFT_T___T_":{"name":"prepareForAnimation(withGIFNamed:loopCount:completionHandler:)","abstract":"Prepares the animator instance for animation.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable19prepareForAnimationFT11withGIFDataV10Foundation4Data9loopCountSi17completionHandlerGSqFT_T___T_":{"name":"prepareForAnimation(withGIFData:loopCount:completionHandler:)","abstract":"Prepare for animation and start animating immediately.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable15prepareForReuseFT_T_":{"name":"prepareForReuse()","abstract":"Stop animating and free up GIF data from memory.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable17startAnimatingGIFFT_T_":{"name":"startAnimatingGIF()","abstract":"Start animating GIF.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable16stopAnimatingGIFFT_T_":{"name":"stopAnimatingGIF()","abstract":"Stop animating GIF.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable21setShouldResizeFramesFSbT_":{"name":"setShouldResizeFrames(_:)","abstract":"Whether the frame images should be resized or not. The default is false
, which means that the frame images retain their original size.
Sets the number of frames that should be buffered. Default is 50. A high number will result in more memory usage and less CPU load, and vice versa.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable19updateImageIfNeededFT_T_":{"name":"updateImageIfNeeded()","abstract":"Updates the image with a new frame if necessary.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html":{"name":"GIFAnimatable","abstract":"The protocol that view classes need to conform to to enable animated GIF support.
"},"Protocols/ImageContainer.html":{"name":"ImageContainer","abstract":"A single-property protocol that animatable classes can optionally conform to.
"},"Classes/Animator.html#/s:FC4Gifu8AnimatorcFT12withDelegatePS_13GIFAnimatable__S0_":{"name":"init(withDelegate:)","abstract":"Creates a new animator with a delegate.
","parent_name":"Animator"},"Classes/GIFImageView.html#/s:vC4Gifu12GIFImageView8animatorGSqCS_8Animator_":{"name":"animator","abstract":"A lazy animator.
","parent_name":"GIFImageView"},"Classes/GIFImageView.html#/s:FC4Gifu12GIFImageView7displayFCSo7CALayerT_":{"name":"display(_:)","abstract":"Layer delegate method called periodically by the layer. Should not be called manually.
","parent_name":"GIFImageView"},"Classes/GIFImageView.html":{"name":"GIFImageView","abstract":"Example class that conforms to GIFAnimatable
. Uses default values for the animator frame buffer count and resize behavior. You can either use it directly in your code or use it as a blueprint for your own subclass.
Responsible for parsing GIF data and decoding the individual frames.
"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"}} \ No newline at end of file diff --git a/docs/docsets/Gifu.docset/Contents/Resources/Documents/undocumented.json b/docs/docsets/Gifu.docset/Contents/Resources/Documents/undocumented.json deleted file mode 100644 index 2c06585..0000000 --- a/docs/docsets/Gifu.docset/Contents/Resources/Documents/undocumented.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "warnings": [ - - ], - "source_directory": "/Users/kaishin/Developer/Frameworks/Gifu" -} \ No newline at end of file diff --git a/docs/docsets/Gifu.docset/Contents/Resources/docSet.dsidx b/docs/docsets/Gifu.docset/Contents/Resources/docSet.dsidx index f75ab1c..960fec1 100644 Binary files a/docs/docsets/Gifu.docset/Contents/Resources/docSet.dsidx and b/docs/docsets/Gifu.docset/Contents/Resources/docSet.dsidx differ diff --git a/docs/docsets/Gifu.tgz b/docs/docsets/Gifu.tgz index a0cb9ca..9fdef66 100644 Binary files a/docs/docsets/Gifu.tgz and b/docs/docsets/Gifu.tgz differ diff --git a/docs/index.html b/docs/index.html index 43590aa..00eb8c9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -56,15 +56,15 @@Gifu adds protocol-based, performance-aware animated GIF support to UIKit. (It’s also a prefecture in Japan).
⚠ Swift 2.3 support is on the swift2.3 branch which will not be getting any future updates.
-github "kaishin/Gifu"
pod 'Gifu'
use_frameworks!
pod install
with CocoaPods 0.36 or newer.Gifu
does not require using the built-in GIFImageView
subclass. The Animator
class does the heavy-lifting, while the GIFAnimatable
protocol exposes the functionality to the view classes that conform to it, using protocol extensions.
There are two options that should cover any situation:
@@ -97,7 +97,7 @@GIFImageView
subclass if you don’t need to combine GIF support with another image library.GIFAnimatable
. In practice, any UIView
subclass would do, since you get most of the required properties for free. For best results, make your UIImageView
subclass conform to GIFAnimatable
to get access to other features such as intrinsic content size.The bread and butter of Gifu. Through protocol extensions, GIFAnimatable
exposes all the APIs of the library, and with very little boilerplate, any class can conform to it.
class MyImageView: UIImageView, GIFAnimatable {
@@ -164,7 +164,7 @@
}
}
-The simplest way to get started is initializing a GIFAnimatable
class in code or in a storyboard, then calling animate(:)
on it.
let imageView = GIFImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
@@ -194,20 +194,20 @@
imageView.prepareForReuse()
}
-Clone or download the repository and open Gifu.xcworkspace
to check out the demo app.
See the full API documentation.
-See LICENSE.
@@ -215,7 +215,7 @@Used for displaying the animation frames.
","parent_name":"ImageContainer"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable8animatorGSqCS_8Animator_":{"name":"animator","abstract":"Responsible for managing the animation frames.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable5layerCSo7CALayer":{"name":"layer","abstract":"Notifies the instance that it needs display.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable5frameVSC6CGRect":{"name":"frame","abstract":"View frame used for resizing the frames.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vP4Gifu13GIFAnimatable11contentModeOSC17UIViewContentMode":{"name":"contentMode","abstract":"Content mode used for resizing the frames.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:ve4GifuRxS_13GIFAnimatablexS_14ImageContainerrS0_20intrinsicContentSizeVSC6CGSize":{"name":"intrinsicContentSize","abstract":"Returns the intrinsic content size based on the size of the image.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable15gifLoopDurationSd":{"name":"gifLoopDuration","abstract":"Total duration of one animation loop
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable11activeFrameGSqCSo7UIImage_":{"name":"activeFrame","abstract":"Returns the active frame if available.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable10frameCountSi":{"name":"frameCount","abstract":"Total frame count of the GIF.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:vE4GifuPS_13GIFAnimatable14isAnimatingGIFSb":{"name":"isAnimatingGIF","abstract":"Introspect whether the instance is animating.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable7animateFT12withGIFNamedSS9loopCountSi_T_":{"name":"animate(withGIFNamed:loopCount:)","abstract":"Prepare for animation and start animating immediately.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable7animateFT11withGIFDataV10Foundation4Data9loopCountSi_T_":{"name":"animate(withGIFData:loopCount:)","abstract":"Prepare for animation and start animating immediately.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable19prepareForAnimationFT12withGIFNamedSS9loopCountSi17completionHandlerGSqFT_T___T_":{"name":"prepareForAnimation(withGIFNamed:loopCount:completionHandler:)","abstract":"Prepares the animator instance for animation.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable19prepareForAnimationFT11withGIFDataV10Foundation4Data9loopCountSi17completionHandlerGSqFT_T___T_":{"name":"prepareForAnimation(withGIFData:loopCount:completionHandler:)","abstract":"Prepare for animation and start animating immediately.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable15prepareForReuseFT_T_":{"name":"prepareForReuse()","abstract":"Stop animating and free up GIF data from memory.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable17startAnimatingGIFFT_T_":{"name":"startAnimatingGIF()","abstract":"Start animating GIF.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable16stopAnimatingGIFFT_T_":{"name":"stopAnimatingGIF()","abstract":"Stop animating GIF.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable21setShouldResizeFramesFSbT_":{"name":"setShouldResizeFrames(_:)","abstract":"Whether the frame images should be resized or not. The default is false
, which means that the frame images retain their original size.
Sets the number of frames that should be buffered. Default is 50. A high number will result in more memory usage and less CPU load, and vice versa.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html#/s:FE4GifuPS_13GIFAnimatable19updateImageIfNeededFT_T_":{"name":"updateImageIfNeeded()","abstract":"Updates the image with a new frame if necessary.
","parent_name":"GIFAnimatable"},"Protocols/GIFAnimatable.html":{"name":"GIFAnimatable","abstract":"The protocol that view classes need to conform to to enable animated GIF support.
"},"Protocols/ImageContainer.html":{"name":"ImageContainer","abstract":"A single-property protocol that animatable classes can optionally conform to.
"},"Classes/Animator.html#/s:FC4Gifu8AnimatorcFT12withDelegatePS_13GIFAnimatable__S0_":{"name":"init(withDelegate:)","abstract":"Creates a new animator with a delegate.
","parent_name":"Animator"},"Classes/GIFImageView.html#/s:vC4Gifu12GIFImageView8animatorGSqCS_8Animator_":{"name":"animator","abstract":"A lazy animator.
","parent_name":"GIFImageView"},"Classes/GIFImageView.html#/s:FC4Gifu12GIFImageView7displayFCSo7CALayerT_":{"name":"display(_:)","abstract":"Layer delegate method called periodically by the layer. Should not be called manually.
","parent_name":"GIFImageView"},"Classes/GIFImageView.html":{"name":"GIFImageView","abstract":"Example class that conforms to GIFAnimatable
. Uses default values for the animator frame buffer count and resize behavior. You can either use it directly in your code or use it as a blueprint for your own subclass.
Responsible for parsing GIF data and decoding the individual frames.
"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"}} \ No newline at end of file