Subscribe to updates: RSS | Twitter
- Fixed bug causing crash when handling purchases
- Improved translations
- Fixed bug causing IAPs to not complete purchasing
- Fixed bug causing duplicate symbols when building for the 32-bit simulator.
- The draw and straighten tools have been disabled on devices running iOS 6
- IMPORTANT: The class prefix used in the SDK has changed from AF to AVY to address a symbol clash with a private framework introduced by Apple in iOS 8.2. All developers should upgrade to 4.4.0 to prevent any issues stemming from the symbol collision.
- New Vignette Tool
- New Overlay Tool
- Improved Draw Tool
- New Lighting and Color Tools
- Simplified High Resolution API
- High Resolution output is now enabled by default for everyone!
- Fixed bugs with the text tool on devices running iOS 8
- Fixed bug with the Aviary SDK Customizer app
- Added @3x assets to support iPhone 6 Plus
- Fixed demo application to work natively on iPhone 6/6 Plus
- Fixed crash for devices running iOS 6 when selecting an effect
- Intensity adjustment added to the effects tool
- Small iOS 8 bug fixes
- Fixed bug with tool icon customization
- Improved documentation
- Return of the Meme tool
- Undo/Redo Support!
- Tutorials to better explain tool usage to users
- Editor cancel confirmation alert when the user has unsaved work
- Support for the en_GB localization
- Temporarily removed Meme tool
- Improved blemish tool and new blur tools
- Improved enhance tool
- Fixed bugs related to IAPs
IMPORANT: If your integration has in-app purchases, you must input your API key and Secret before making any calls to [AFPhotoEditorController inAppPurchaseManager]
.
- Minor bug fixes for devices running iOS 6.
- Finally: a brand new, optimized design!
- 64 bit support
- Reduced bundle size
- Improved, simplified Customizer app
- Brand new text tool with font support
- New store layout and design (for those of you with IAPs enabled)
IMPORTANT: API key input has changed. Please read the detailed instructions Developer Guide; if you skip this step and your API key is not validated, your users will see an error message when they launch the editor.
- Fixed bug with accessing certain content tools.
- Fixed bug with text tool affecting users with non-English keyboards
- Updated Japanese Translations
- Added better support for using the SDK with apps compiled with iOS 6
- Updated translations
- Fixed minor bug with Splash tool
- Updated translations
- Fixed bug with accessing staging environment of Aviary PCN
- Updated Japanese translations
- Fixed bug with customization options
- Compatible with iOS 7: this build compiles properly for iOS 7 and resolves some display issues. Included in the SDK zip is a customizer guide provides some tips on using our desktop Customizer app to create a beautiful iOS7-like "flat design."
- Fixed Customizer Bug
Note: As we collect feedback and observe new patterns in partner apps going forward, we'll be putting that together to optimize the SDK and release an iOS7-only version of Aviary later this fall. Feel free to get in touch and let us know what you need!
- Compatible with iOS 7: this build compiles properly for iOS 7 and resolves some display issues. Included in the SDK zip is a customizer guide provides some tips on using our desktop Customizer app to create a beautiful iOS7-like "flat design."
- Numerous performance enhancements
Note: As we collect feedback and observe new patterns in partner apps going forward, we'll be putting that together to optimize the SDK and release an iOS7-only version of Aviary later this fall. Feel free to get in touch and let us know what you need!
- Updated Headers to include those required for IAPs
- Updated API validation
- Security.framework now required
- Updated Translations
- Minor Customization Fixes
- Updated Translations
IMPORTANT: The Aviary iOS SDK will no longer be distributed via GitHub, please visit http://www.aviary.com/ios to download the latest version. Starting with v2.6.0 the Aviary iOS SDK will no longer support iOS 4.3. If your app supports iOS 4.3, you should not update to v2.6.0 as it may result in crashes for your iOS 4.3 users. Release v2.5.8 is the last version to support iOS 4.3. Please contact us if you need a copy.
- New Adjust tool - Combines Brightness, Contrast, Saturation and Warmth into one easy to use tool.
- Splash tool - Strips out color, then lets you selectively add it back into your photo.
- Content Badges for PCN partners.
- Bug fixes and performance improvements.
- Removes all references to UDIDs - We've updated our Localytics analytics library to the most recent version to comply with new App Store guidelines. After May 1st, Apple will reject all apps that make reference to UDIDs. For more information, please see this post on Localytics' blog: http://www.localytics.com/blog/2013/apple-ios-udid-banned/
- Sleek, Streamlined Interface with Improved Customization
- New Focus Tool - Draws attention to the subject of your photo by defining the photo's focal point.
- New Warmth Tool - Adjusts the photo's color balance
- Improved Enhance Tool - Hi-Def enhance smartly sharpens and adjusts contrast, Illuminate improves poor-lighting, and we've renamed Balance to Color Fix
- Instant Editor Load - Actual editor load time has been drastically reduced due to improved interface rendering
- Reduced Bundle Size - Halved the weight of the SDK's asset bundle
- Less Memory Consumption for High Resolution Editing
- New Interface Customizer - Dedicated Mac App that makes interface customization drastically simpler to understand.
- Bug Fixes
- Stability Improvements
- Overhauled Effects and Stickers tools with completely redesigned UI
- Updated default effects: effects are now more subtle and generally usable, based on your feedback
- Added brand new Frames Tool
- Improved the Text and Meme tools to support multiple lines
- Improved performance
- Due to lack of partner demand, we’ve removed support for landscape mode on the iPhone and iPod Touch for this release. If your integration relies on landscape mode, we suggest you do not update to this version and contact us to discuss your options.
IMPORTANT: v2.5.8 is the last version of the Aviary iOS SDK which will support iOS 4.3+. Every new release starting with the upcoming v2.6 will require iOS 5.0+. If your app supports iOS 4.3, you should not update to v2.6+ as it may result in crashes for your iOS 4.3 users.
- iOS 4 bug fixes
- iOS 4 bug fixes
- iOS 4 bug fixes, including a crash in the text tool
- Fixed a bug preventing RTL languages (Hebrew, Arabic) from working properly in the text tool
- Fixed some Meme tool bugs related to very small images
- New customization option: remove shadows from toolbar buttons (Premium partners only)
- Fixed a potential crash in some apps caused by the Meme tool
- Fixed customization API validation for boxed booleans
- Fixed typo in customization docs
- Fixed missing translation for "Enter text here" in the Text tool
- Fixed an issue in the Whiten tool causing it to turn images black
- Fixed editor.bottomBarButtonIconColor in iOS 4.3
- Added "Next" as a right navigation button text preset option
- Fixed an issue causing a crash when pressing the Done button before the image loads
- Fixed output UIImage
scale
andsize
property values - Improved UI responsiveness while loading the SDK for the first time
- Fixed issue causing AFPhotoEditorController's
style
attribute to always return nil - Fixed crash in the Meme tool caused by a missing resource file
- Fixed a bug preventing customization of the SDK's navigation bar text color
- Added tons of new customization options for our premium partners! Email us at partners@aviary.com if you're interested in deeper customization for your integration.
- New in-app purchase for our premium partners: Mustache sticker pack
- Added "Restore" button for screens with in-app purchases
- iPhone 5 / iOS 6 optimization
- It's now possible to disable localization
- Customizable crop presets (and specify whether or not you want users to be able to invert them)
- Bumped editing resolution up to 1024x1024
- Added GL support for faster effects and enhance filters processing and much faster hires processing for all tools.
- Enabled zoom for more tools
- Added Meme tool
- Stickers can now be dragged onto the photo
Version 2.5.0 is a big update to the SDK, including GPU-based image processing, a new tool, and many improvements to existing user and developer-facing features. To support these great additions, we've added a couple of framework dependencies, namely:
OpenGLES.framework
CoreText.framework
For the full list of frameworks, see README.md.
In order to continue evolving the SDK, we've also deprecated a few high-res API methods in AFPhotoEditorSession
and AFPhotoEditorContext
:
// AFPhotoEditorSession.h
- (AFPhotoEditorContext *)createContext DEPRECATED_ATTRIBUTE;
- (AFPhotoEditorContext *)createContextWithSize:(CGSize)size DEPRECATED_ATTRIBUTE;
// AFPhotoEditorContext.h
- (void)renderInputImage:(UIImage *)image completion:(void (^)(UIImage *result))completion DEPRECATED_ATTRIBUTE;
We've provided new methods to better support GPU-based image processing, one of the biggest features introduced in this update. These deprecated methods will continue to provide CPU-based processing for now, but expect them to be removed in 3.0.
This version also includes a completely new, dynamic visual customization and configuration API, provided via class methods in AFPhotoEditorCustomization
. We've wired up the old visual customization API in AFPhotoEditorStyle
to use the new one, so it should continue to function as expected.
If you run into any problems with the upgrade, let us know!
- Moved downloaded content and data files to /Library/Application Support/App Name/AviaryContentPacks[.sqlite]
- Fixed missing icons in slider-based tools (Brightness, Contrast, Saturation, Sharpness)
- Fixed an issue causing incorrect high-res images edited using the Brightness tool to be incorrect in rare situations
- Improved the high-res rendering speed of the Orientation tool
- Added armv7s architecture
- Fixed iOS 4.0 compatibility issue
- Updated language translations
- New: straighten photos in the Orientation tool!
- Fixed a potential crash in Effects/Stickers tools
- Fixed bugs in the Crop UI
- New redeye, whiten and blemish tool implementations
- New brightness and contrast tool implementations
- New B&W and Sepia effects
- New tool icons and improved editor visuals
- Fixed a crash related to the high-res API
- Added the ability to set valid interface orientations via a new runtime option (in AFPhotoEditorControllerOptions.h)
- Many other bug fixes and improvements
- Fixed an issue where Stickers archives in the user's Documents directory caused apps to be rejected by Apple. These archives now include an extended attribute to prevent them being backed up by iCloud.
- Resolved a duplicate symbol linker error for apps that include MiniZip
This is the first public release of 2.3.x. We've added a few new features and fixed a number of issues since the last 2.2.x release, all of which are documented below. Enjoy!
- Updated analytics code
-
Improved memory conservation: memory for high-res output is only allocated if needed (it is not allocated if the user does not perform any actions in the editor).
-
The image passed to an
AFPhotoEditorContext
render call will now benil
if the user does nothing in the editor (instead of a non-nil, but emptyUIImage
object). The same behavior occurs if the user taps "Cancel" in the editor. -
Fixed a minor bug in the "Auto" action inside the Enhance tool.
-
Added sound to the Brightness, Contrast and Saturation tools (the same sound played by the iOS keyboard; the sound will play if the user has "Keyboard Clicks" enabled in the Settings app).
- Minor changes and bug fixes
-
Added three new classes:
AFPhotoEditorStyle AFPhotoEditorSession AFPhotoEditorContext
These classes allow developers to control the appearance of an
AFPhotoEditorController
instance, obtain high-resolution output from the editor, and more. See the "High Resolution" and "Customization" sections in the README for more information. -
Added the "Viewfinder" effect pack for in-app purchase partners.
-
Bug fixes and other incremental improvements.
- Fixed a crash triggered by multiple launches of the editor.
- Added the Viewfinder pack for in-app purchase.
- Fixed missing in-app purchase reporting.
- Fixed UI-related bug affecting in-app purchase partners.
- Added the Stickers tool, giving users the ability to add stickers to their photos! The Original pack is available to all users free of charge.
- Added infrastructure for current and future downloadable content packs.
- Updated the Night function in the Enhance tool.
Note: this update adds a dependency on CoreData.framework
. Information about downloadable content packs, as well as information about purchases if in-app purchase is enabled, is stored in a database in the app's user documents directory.
- Fixed the interaction between our analytics library and in-app purchase receipts
- Fixed memory leaks
- Added a missing analytics call in Effects tool
- Fixed a potential crash when restoring in-app purchases
- Disabled analytics debug logging
- Updated translations
- Updated translations in the Effects tool
- New feature: in-app purchases for the Effects tool! This feature is disabled by default and only available to select partners. Please contact us at api@aviary.com for more information about selling Effect packs in your app.
- Updated translations
- Updated analytics library
- Minor bug fixes and improvements
Note: the addition of in-app purchase functionality and our updated analytics code now requires apps integrating the SDK to link against the following libraries:
- StoreKit.framework
- libz1.2.5.dylib
- libsqlite3.0.dylib
Please update your build settings accordingly.
- Added a new initialization method to
AFPhotoEditorController
allowing selection and reordering of tools in the SDK interface. Please see the "Customization" section of the README for more information. - Added missing translations in Crop tool.
- Updated Traditional Chinese language files.
Welcome to the new and improved Aviary editor! This is a ground-up redesign, including a completely new user interface, updated effects, and a few new tools. We'll be following up with new features and bug fixes on a regular basis, so check back soon for updates.
- Fixed a layout bug when using fewer than 15 tools in the iPad interface.
- Minor internal change
- Minor bug fixes and improvements
- Changed the text of "Save" to "Done"
The Meme tool has been restored as a beta feature. It is disabled by default, but you can enable it by passing the following constant (defined in AFFeatherConstants.h
) when creating your AFFeatherController
instance:
extern NSString *const kAFMeme;
As a result of adding this tool, we have also introduced a dependency on Core Text. Please add this framework to your "Link Binary With Libraries" build phase, regardless of whether or not you're using the meme tool:
CoreText.framework
We may periodically release more of these beta tools in the future, so stay tuned!
Follow-up fix for the resizing bug affecting images smaller than 960x960.
Fixes a resizing error causing images with certain imageOrientation
property values to become distorted.
This release aims to resolve a duplicate symbol error encountered when using MBProgressHUD with the Aviary SDK.
This release features many bug fixes and a new (optional) iPad interface. We're also now building against the iOS 5 SDK with Xcode 4.2 GM.
We've cleaned up the public interface to AFFeatherController
, and added an init method allowing iPad apps to display an interface tailored to the iPad form factor:
- (id)initWithImage:(UIImage *)image andTools:(NSArray *)tools andUserInterfaceIdiom:(UIUserInterfaceIdiom)idiom;
There are currently two possible values you can pass via the idiom
parameter:
UIUserInterfaceIdiomPhone
UIUserInterfaceIdiomPad
Passing the first will initialize the controller with the iPhone interface, while the latter will initialize with the iPad interface. Note: UIUserInterfaceIdiomPad
will only work correctly on iPad devices.
The standard init methods are still present, and will display the interface associated with the current device's user interface idiom:
- (id)initWithImage:(UIImage *)image;
- (id)initWithImage:(UIImage *)image andTools:(NSArray *)tools;
A number of issues with 1.1.x have been reported. Here are a few of the changes we've made:
- Fixed an issue where image orientation was not preserved after applying plugins.
- Fixed an intermittent crash caused by a zero geometry bug.
- Fixed a number of substantial memory leaks.
This is a minor update. A much more significant update is coming shortly.
- Built library against the iOS 5 GM SDK with Xcode 4.2
- Fixed a divide by zero error in -calculateMinMaxZoom (Issue #2)
This update includes important fixes related to App Store submission:
- Fixed some internal methods that conflicted with private APIs.
- Updated all targets to allow integration with universal (iPhone/iPad) apps.
The text of the cancellation confirmation dialog has been updated.
This update adds the following methods to the AFFeatherDelegate
protocol:
- (BOOL)featherShouldConfirmCancel:(AFFeatherController *)featherController;
Implement this method to control whether or not a confirmation dialog is presented to the user upon dismissing the SDK interface without saving.
This update resolves two issues in the 1.1.4 build:
- Running the Cinematic effect resulted in an all-white image.
- Applying empty text with the text tool caused a crash.
This update resolves a display issue caused by hiding the status bar.
This update adds the following filter effects to the Effects plugin:
- Always Sunny
- Code Red
- Negative
This update additionally makes it easier to select which plugins (tools and effects) are enabled in your distribution, at compile time and at run time.
Each plugin has its own bundle, containing resources used only by that individual plugin. These bundles are packaged within AviarySDK-Plugins.bundle
. For now, the best way to omit a plugin and its resources entirely from your application is to remove that plugin's bundle from AviarySDK-Plugins.bundle
. We are working on better ways to accomplish this, but if you only want to use a few plugins, simply remove the ones you don't intend to use.
A number of constants have been added to AFFeatherConstants.h
, which correspond to values passed to AFFeatherController
's -initWithImage:andTools:
method, and the pluginId
property of AFFeatherPlugin
objects (used in conjunction with the -feather:buttonForPlugin:
delegate method).
An example of initializing the AFFeatherController
instance is as follows:
- (void)displayEditorForImage:(UIImage *)image
{
NSArray *tools = [NSArray arrayWithObjects:kAFEffects, kAFCrop, kAFRotate, kAFFlip, nil];
AFFeatherController *featherController = [[AFFeatherController alloc] initWithImage:image andTools:tools];
[featherController setDelegate:self];
[self displayModalViewController:featherController animated:YES];
[featherController release];
}
And here is an example of customizing buttons:
- (UIButton *)feather:(AFFeatherController *)controller buttonForPlugin:(id<AFFeatherPlugin>)plugin
{
UIButton *button = [plugin button];
if ([[plugin pluginId] isEqualToString:kAFEffects]) {
// Set up the effects button
} else {
// Set up other buttons
}
return button;
}
New plugin ID constants:
// Top-level plugin constants:
extern NSString *const kAFBlemish;
extern NSString *const kAFBlur;
extern NSString *const kAFBrightness;
extern NSString *const kAFColors;
extern NSString *const kAFContrast;
extern NSString *const kAFCrop;
extern NSString *const kAFDrawing;
extern NSString *const kAFEffects;
extern NSString *const kAFFlip;
extern NSString *const kAFMeme;
extern NSString *const kAFRedeye;
extern NSString *const kAFRotate;
extern NSString *const kAFSaturation;
extern NSString *const kAFSharpen;
extern NSString *const kAFStickers;
extern NSString *const kAFText;
extern NSString *const kAFWhiten;
// Effects plugin constants:
extern NSString *const kAFAlwaysSunny;
extern NSString *const kAFAutoEnhance;
extern NSString *const kAFCinematic;
extern NSString *const kAFCodeRed;
extern NSString *const kAFDaydream;
extern NSString *const kAFHeatwave;
extern NSString *const kAFIndiglow;
extern NSString *const kAFNegative;
extern NSString *const kAFOriginal;
This update mainly provides better interface customization support, particularly for applying images to different interface elements. A new protocol and three new properties have been added to AFFeatherController
.
It also resolves the presentation animation lag issue introduced in 1.1.0.
Future updates to the SDK will provide customization options via this new protocol.
@protocol AFInterfaceElement <NSObject>
@required
@property (...) UIColor *tintColor;
@property (...) UIImage *backgroundImage;
@end
AFInterfaceElement objects provide an entry point for customizing different views within the SDK. Three read-only references to objects have been provided in AFFeatherController.h
:
@interface AFFeatherController : UIViewController {
// ...
}
// ...
@property (...) id<AFInterfaceElement> topBar;
@property (...) id<AFInterfaceElement> bottomBar;
@property (...) id<AFInterfaceElement> paramsBar;
// ...
@end
Note that these objects are not necessarily subclasses of UIView
. They are proxy objects created before their corresponding views in order to support customization prior to displaying the user interface.
This property allows background images and textures to be applied to different views in the SDK. In most cases, it is implemented by using +[UIColor colorWithPatternImage:]
, and setting the resulting color to the backgroundColor
property of a view, except for the top bar (topBar
), which draws the image within its bounds, stretching it instead of tiling.
backgroundImage
and tintColor
may be used simultaneously, although a full alpha tintColor
will obscure the background image. You may want to experiment with the alpha channel, or disable a view's tintColor
entirely by setting it to [UIColor clearColor]
. Again, there is an exception for topBar
: setting a backgroundImage
will obscure the tintColor
of the bar, although the buttons will remain tinted.
This update resolves two issues:
- Unnecessary log messages no longer show up in the release build of the SDK.
- The debug slider should no longer appear in the AFFeatherController's view.
There is a known issue that didn't make it into this release, but will be resolved shortly:
- When displaying the AFFeatherController modally, the animation lags. This is a result of color customization support in 1.1 and will be resolved in the next release.
This is a significant update to the Feather iOS SDK, and will require you to change your code slightly.
The following interfaces have changed:
- The
AFWidgetController
class has been renamed toAFFeatherController
. - The following changes have been made to the AFFeatherDelegate protocol:
- Removed
-afFinishedWithImage:
and-afCanceled
- Removed all preexisting interface customization delegate methods
- Added
-feather:finishedWithImage:
and-featherCanceled:
- Added
-feather:buttonForPlugin:
- Removed
Please update your code accordingly. This one-time change is necessary for ongoing improvement of the SDK.
Several methods have been added to the AFFeatherController
class to enable customization of the top and bottom bars:
-setTitleBarTintColor:
-setPluginBarTintColor:
-setPluginParametersBarTintColor:
Each method takes one UIColor object as input. The UIColor must be in the device RGB color space--you cannot use a pattern, for example (though we aim to provide this functionality in a future update). You should call these methods after initializing and before displaying the AFFeatherController
to the user.
This method has been added to help support more advanced customization of the Feather interface. Here is the full method signature:
-(UIButton *)feather:(AFFeatherController *)featherController buttonForPlugin:(id<AFFeatherPlugin>)plugin
You should implement this method if you want to customize the buttons at the bottom of the main interface. The plugin
parameter provides access to some useful information about each plugin, including:
pluginId
- its identifier (e.g. "redeye")localizedName
- its localized name (e.g. "Redeye"--currently English only)icon
- a UIImage representation of the default iconbutton
- a reference to the default button instance
Note in particular the button
property. This is the default button instance. Returning this object unchanged will result in the same behavior as leaving this method unimplemented. Alternatively, you may use the button's -setTintColor:
method to assign it a tint color.
Providing your own UIButton instance will enable you to more fully customize the look and feel of the interface, with one minor caveat: the button you provide may be resized. Be sure to take this into account when creating your buttons.
Initial release.