- Fixed Xcode 16 submissions failed due to bitcode contained in the frameworks. (#1902)
- Fixed issue where the video could not be exported in case the
trimModel.endTime
of a loaded serialization is longer than the video's duration. (#1873)
- Added
PrivacyInfo.xcprivacy
containing information on the data collected by the SDKs. (#1868)
- [ImglyKit] Added
StickerSelectionController.batchSize
to adjust the batch size for loading and prefetching stickers. (#1789) - [VideoEditorSDK] Added
AudioClipSelectionController.batchSize
to adjust the batch size for loading and prefetching audio clips. (#1838)
- [ImglyKit] Fixed issue where stickers would not be loaded for the GIPHY sticker category on iPad. (#1789)
- [ImglyKit] Fixed potential compiling issue with React Native. (#1854)
- [VideoEditorSDK] Fixed HDR videos having overly exposed brightness. (#1830)
- Added support for Expo 49. (#1811)
- Built with Swift 5.8 / Xcode 14.3.1
- [ImglyKit] Replaced font 'Galano' with font 'Lexend Bold', 'Campton' with 'Outfit Bold', 'Wolesbro' with 'Cookie', and 'Amberlight' with 'Allison'. (#1790)
- [ImglyKit] Implemented thread-safety in
AssetManager
to increase robustness against concurrent access in environments with multi-threaded contexts. (#1807)
- [ImglyKit] Added
StickerCollectionDelegate.stickerCollection(_ stickerCollection:, didSelect:, metadata:)
, soStickerCollectionDelegate
now supports passing metadata to sticker placed by from a customStickerCollection
. (#1708) - [ImglyKit] Added
AdjustToolControllerOptions.limitConfigurationClosure
that allows configuration of adjustment tool slider minimum and maximum values. (#1739) - [ImglyKit] Added
PhotoEditViewControllerOptions.outputScaling
andVideoEditViewControllerOptions.outputScaling
options, that ensure that output dimensions exactly match the selected aspect ratio. (#1359) - [VideoEditorSDK] Added
VideoEditViewControllerOptions.showTimelineOnMainScreen
flag, that enables video timeline view on the main screen of the editor. (#1719) - [VideoEditorSDK] Added
VideoClipToolControllerOptions.videoClipAddButtonSelectedClosure
that is invoked when new video is added to the composition. (#1720) - [VideoEditorSDK] Added duration option for text designs. (#1695)
- [VideoEditorSDK] Added
.composition
and.audio
screens to analytics. (#1781)
- [ImglyKit] Changed behavior of the text design tool to have a dedicated color and layout option. The old behavior can be restored by using the
ToolMenuItem.createLegacyTextDesignToolItem()
item. (#1695)
- [ImglyKit] Fixed access level of
OverlayEditController.init(sliderEditController:)
topublic
so thatOverlayEditController
can be subclassed. (#1757) - [ImglyKit] Fixed showing filters when using
CameraViewControllerOptions.showFilters
. (#1781) - [VideoEditorSDK] Fixed
VideoEditorResult.hasChanges
would befalse
for muted videos. (#1735)
- [ImglyKit] Added
Theme.uppercasedToolbarTitles
that controls capitalization of titles in the editor's toolbar. - [ImglyKit] Added support to exchange the
UIFont
used in the SDK via theTheme
. To use this feature, assign custom fonts toTheme.primaryFont
,Theme.mediumFont
,Theme.boldFont
,Theme.monospacedFont
andTheme.searchBarFont
.
- [ImglyKit] Fixed serialization created from videos, sometimes not working on photos. (#1658)
- [ImglyKit] Fixed camera continuously reporting runtime error when on call. (#1693)
- [ImglyKit] Fixed brush being rendered at the incorrect spot when using rotation on transform tool. (#1668)
- [ImglyKit] Fixed missing Obj-C compatibility for
StickerProvider
. (#1665) - [PhotoEditorSDK] Fixed exported images being upside down when taken in mirrored mode from native camera. (#1659)
- [VideoEditorSDK] Fixed audio clips from the asset catalog not playing. (#1697)
- [ImglyKit] Fixed brush serialization made on Android rendered inverted. (#1657)
- [VideoEditorSDK] Fixed audio serialization inconsistencies between Android and iOS. (#1661)
- [VideoEditorSDK] Added support for custom audio selection views. (#1661)
- [VideoEditorSDK] Added option to search and load audio clips from external providers. (#1661)
- [VideoEditorSDK] Added a Soundstripe audio provider and predefined audio clip category. Add the
SoundstripeAudioClipCategory
to your audio categories to search for and use Soundstripe audio clips directly from the audio tool. (#1661)
- [ImglyKit] Fixed frames tool using abnormal amount of memory with bigger images. (#1655)
- [VideoEditorSDK] Fixed audio slider not working on videos without sound. (#1654)
- [ImglyKit] Added
SmartSticker
API that allows custom sticker implementation. (#1641)
- [ImglyKit] Fixed sticker add button icon being replaced on SwiftUI. (#1587)
- [ImglyKit] Fixed action buttons not showing when embedded into navigation controller. (#1614)
- [VideoEditorSDK] Fixed stickers and text not showing in transform tool when using
Duration
action. (#1619)
- [ImglyKit] Added
singleToolUse
mode that skips main menu if only one tool is used. (#1524)
- [ImglyKit] Fixed loading serializations produced on Android, when no text background color was provided. (#1554)
- [ImglyKit] Fixed App Store Connect private symbol warnings. (#1545)
- [ImglyKit] Fixed overlay blend modes not working on iOS 16. (#1534)
- [ImglyKit] Added all
OverlayButton
s to participate in custom class replacements. (#1471) - [VideoEditorSDK] Added
VideoSegment
API toVideo
for importing and exporting the complete video composition state including the individual clip trimming parameters. (#1411) - [VideoEditorSDK] Added
PhotoEditModel.compositionModel
to modify the video composition state while the editor is running. (#1411) - [VideoEditorSDK] Added duration action for text and stickers. (#1409)
- [VideoEditorSDK] Deprecated
AVAsset
API forVideo
in favor ofVideoSegment
API. (#1411)
- [ImglyKit] Fixed crash when deserializing multiple instances of the same personal/external sticker. (#1466)
- [ImglyKit] Fixed not requesting
PHPhotoLibrary
access when the camera roll button is not shown. (#1470)
- Added experimental Mac Catalyst support. (#1311)
- [ImglyKit] Added handling of low-memory warnings to
AssetManager
. (#1335) - [PhotoEditorSDK] Added the possibility to populate
AssetManager
for headless photo rendering. (#946)
- [ImglyKit] Fixed smart sticker selection after scrolling. (#1372)
- [ImglyKit] Fixed hiding personal sticker category for specific products in
StickerToolControllerOptionsBuilder.addedStickerClosure
. (#1363) - [ImglyKit] Fixed weather sticker deserialization when using a new asset catalog. (#946)
- [ImglyKit] Fixed crash when using background removal with serialization. (#1315)
- [ImglyKit] Fixed
FilterToolControllerOptionsBuilder.showFilterIntensitySlider
was not applied when opening the filter tool with an applied filter. (#1343) - [PhotoEditorSDK] Fixed UI showing wrong background removal button icon when using serialization. (#1315)
- [ImglyKit] Added background removal option for personal and external non-animated stickers that depict people. (#1194)
- [PhotoEditorSDK] Added background removal option for photos that depict people. (#1194)
- Fixed deprecation warnings for Swift tools version 5.6 when integrating the SDK via Swift Package Manager (SPM). (#1293)
Please see the PE.SDK or VE.SDK version 11 migration guide for details.
- [ImglyKit] Added font selection icon text to localization.
- [PhotoEditorSDK] Added
PhotoEditorTask
,PhotoEditorResult
andPhotoEditorError
types. - [PhotoEditorSDK] Added optional
photoEditViewControllerShouldStart
method inPhotoEditViewControllerDelegate
and SwiftUIonShouldStart
modifier. - [VideoEditorSDK] Added
VideoEditorTask
,VideoEditorResult
andVideoEditorError
types. - [VideoEditorSDK] Added optional
videoEditViewControllerShouldStart
method inVideoEditViewControllerDelegate
and SwiftUIonShouldStart
modifier.
- [ImglyKit] Deprecated
StickerCategory.all
,Frame.all
,Effect.all
,Overlay.all
,FontImporter.all
,TextDesign.all
,VideoClipCategory.all
, andAudioClipCategory.all
. Add the assets directly to theassetCatalog
of yourConfiguration
object instead. - [PhotoEditorSDK] Deprecated
PhotoEditorResult.hasChanges
in favor of.status
. - [VideoEditorSDK] Deprecated
VideoEditorResult.hasChanges
in favor of.status
.
- Built with Swift 5.6 / Xcode 13.3.1
- Increased the deployment target to iOS 13.0.
- [ImglyKit] Updated the brush tool to use Metal instead of OpenGL.
- [ImglyKit] Moved
.willBecomeActiveTool
,.didBecomeActiveTool
,.willResignActiveTool
, and.didResignActiveTool
from a publicUIViewController
extension toViewController
. - [ImglyKit] Moved public extensions of UIKit, Foundation and other iOS SDK classes to
.imgly
namespace for Swift and changed the prefix toimgly_
for Obj-C to avoid collisions. Deprecated old extensions. - [ImglyKit] Renamed
IMGLY.Error
toIMGLYError
. - [ImglyKit] Unified SwiftUI and UIKit result types.
- [ImglyKit] SwiftUI
onDidSave
andonDidFail
modifiers use new result and error types. - [PhotoEditorSDK]
PhotoEditViewControllerDelegate
uses new result and error types:photoEditViewController(_ photoEditViewController: PhotoEditViewController, didSave image: UIImage, and data: Data)
is nowphotoEditViewControllerDidFinish(_ photoEditViewController: PhotoEditViewController, result: PhotoEditorResult)
photoEditViewControllerDidFailToGeneratePhoto(_ photoEditViewController: PhotoEditViewController)
is nowphotoEditViewControllerDidFail(_ photoEditViewController: PhotoEditViewController, error: PhotoEditorError)
- [VideoEditorSDK]
VideoEditViewControllerDelegate
uses new result and error types:videoEditViewController(_ videoEditViewController: VideoEditViewController, didFinishWithVideoAt url: URL?)
is nowvideoEditViewControllerDidFinish(_ videoEditViewController: VideoEditViewController, result: VideoEditorResult)
videoEditViewControllerDidFailToGenerateVideo(_ videoEditViewController: VideoEditViewController)
is nowvideoEditViewControllerDidFail(_ videoEditViewController: VideoEditViewController, error: VideoEditorError)
- [ImglyKit] Fixed a crash when opening the brush tool with the iOS Simulator on M1 Macs.
- Removed all previously deprecated methods.
- Removed any usage of OpenGL.
- [ImglyKit] Removed
CameraViewController.dataCompletionBlock
and moved related logic toCameraViewController.completionBlock
. - [ImglyKit] Removed
UIImage
parameter fromCameraViewController.completionBlock
. - [PhotoEditorSDK] Removed the use of
UIImage
inPhotoEditViewControllerDelegate
, please usedata
andUIImage(data:)
instead. - [PhotoEditorSDK] Removed the possibility to save an unedited image without rendering if the source
data
is unavailable. - [VideoEditorSDK] Removed legacy trim controls. Now, the overlay trim controls will be always used which was the default before. Deprecated
TrimToolOptions.useOverlayControls
, and.controlsContainerView
,.currentTimeLabel
,.durationLabel
,.playPauseButton
of theTrimToolController
.
- [ImglyKit] Fixed potential issues with App Store submission when integrating the SDK via CocoaPods.
- [ImglyKit] Added support for custom sticker selection views.
- [ImglyKit] Added option to search and load stickers from external providers.
- [VideoEditorSDK] Added serialization support for personal animated GIF stickers.
- [VideoEditorSDK] Added a GIPHY sticker provider and predefined sticker category. Add the
GiphyStickerCategory
to your sticker categories to search for and use animated GIPHY stickers directly from the sticker tool.
- [VideoEditorSDK] Improved support for viewing animated GIF stickers inside sticker categories.
- [ImglyKit] Fixed
CameraViewController
to use the asset catalog (for live filters) defined by theConfiguration
instead of always usingAssetCatalog.shared.effects
. - [ImglyKit] Fixed
CameraViewController
photo library permissions request that could fail on iOS 15.2+. - [ImglyKit] Fixed overlay artifacts for wide color and/or transparent images.
- [ImglyKit] Fixed stickers larger than 4096^2 producing a black image background.
- [ImglyKit] Fixed (silent) force crop mode did not consider rotatable crop aspect ratios to determine the best matching aspect.
- [ImglyKit] Fixed (silent) force crop behaviour on images with aspect ratio similar to one of the defined ones in
TransformToolControllerOptions.allowedCropAspects
. - [ImglyKit] Fixed
OverlayToolControllerOptionsBuilder.allowedBlendModes
andStickerOptionsToolControllerBuilder.allowedStickerActions
would not be accessible from Objective-C. - [ImglyKit] Fixed
StickerToolController.menuViewController
would not scroll to previousily selected sticker category. - [ImglyKit] Fixed wide color values for sprites deserialized with P3 color space instead of extended sRGB.
- [VideoEditorSDK] Fixed export progress percentage on trimmed videos.
- [VideoEditorSDK] Fixed trim time calculation for videos with non-integer (drop-frame) frame rate.
- [VideoEditorSDK] Fixed
TrimToolControllerOptionsBuilder.maximumDuration
,TrimToolControllerOptionsBuilder.allowedTrimOverlayActions
,AudioToolControllerOptionsBuilder.allowedAudioOverlayActions
,CompositionToolControllerOptionsBuilder.allowedCompositionOverlayActions
would not be accessible from Objective-C.
- Added support for SwiftUI. You can now use
PhotoEditor
,VideoEditor
andCamera
directly in your SwiftUI applications. - [ImglyKit] Added option to configure a custom watermark image.
- [ImglyKit] Added
setProgress
andshow
(withcancelHandler
) methods toProgressView
protocol, which can be implemented to support progress reporting and cancelation of long-running processes. - [VideoEditorSDK] Added progress percentage and ability to cancel video exports.
- [ImglyKit] Fixed icon image cache was not cleared when (re)assigning
IMGLY.bundleImageBlock
for icon customizations. - [VideoEditorSDK] Fixed audio and video playback state responding to audio interruptions such as phone calls, Siri, keyboard dictation.
- [VideoEditorSDK] Optimized video compositions.
- [ImglyKit] Fixed special characters being inserted with keyboard dictation while using text input with emoji opt-out.
- [VideoEditorSDK] Fixed flipping sticker animation while editing a sticker's opacity.
- [ImglyKit] Fixed sprites not visible in transform and frame tool.
- [ImglyKit] Fixed front/back camera switching UI layout.
- [ImglyKit] Fixed Japanese/Chinese multistage text input with emoji opt-out.
- [ImglyKit] Fixed
-0.0
that could be shown for angle adjustments with theScalePicker
in the transform tool. - [VideoEditorSDK] Fixed
Theme.tintColor
was not applied toVideoTrimSelectionView
when entering the composition or (clip) trim tool with non-default trim start or end time. - [VideoEditorSDK] Fixed missing thumbnails for some videos while trimming to very short durations.
- [VideoEditorSDK] Fixed scrubber tooltip that could display negative values for some videos.
- [VideoEditorSDK] Fixed scrubber that could move outside the trim interval for some videos.
- [VideoEditorSDK] Fixed real end trim time that could not have been selected for some videos.
- [VideoEditorSDK] Fixed adding personal video clips in the composition tool that could fail to import some videos on iOS 14+. This disables the previously used
PHPickerViewController
in favor ofUIImagePickerController
even on iOS 14+ until a better solution is available. - [VideoEditorSDK] Fixed stickers would not be displayed correctly when replaced with animated stickers or when switching between sticker categories containing static as well as animated stickers on iOS 15.
- [VideoEditorSDK] Fixed video preview stuck on first frame for some videos.
- [VideoEditorSDK] Added serialization support for audio composition.
- [VideoEditorSDK] Added
minimumDuration
andmaximumDuration
toTrimToolControllerOptions
in order to restrict the edited video to specific duration limits. - [VideoEditorSDK] Added
VideoEditViewControllerOptions.forceTrimMode
,TrimToolControllerOptions.videoTooShortConfirmationClosure
, andCompositionToolControllerOptions.compositionTooShortConfirmationClosure
in order to change the behavior when a video does not fit within the duration limits.
- [VideoEditorSDK] Improved the UX of the composition and (clip) trim tool timeline, e.g., the player is only temporarily paused while interacting with the timeline.
- [VideoEditorSDK] Changed the composition and (clip) trim tool timeline to automatically zoom to the current trim selection. The old behavior can be restored by disabling
VideoTrimView.isZoomToSelectionEnabled
. - [VideoEditorSDK] Increased the default composition tool timeline height and thumbnail width to match the (clip) trim tool timeline appearance for improved accessibility. Set
VideoTrimView.thumbnailWidth
to22
when it is contained in aCompositionEditController
andCompositionEditController.trimViewHeight
to64
by subclassingCompositionToolController
in order to preserve the old size.
- [VideoEditorSDK] Fixed misaligned layout of trim view when the editor is embedded into a
UINavigationController
. - [VideoEditorSDK] Fixed slow tooltip updates when dragging start or end time trim handles on iOS 15.
- [VideoEditorSDK] Fixed waveform in the audio tool was not shown for iOS 11 and earlier.
- [ImglyKit] Added
MediaEditViewControllerOptions.forceExport
which will force the photo/video to be rendered and exported in the defined output format even if no changes have been applied. Otherwise, the input asset will be passed through and might not match the defined output format.
- [ImglyKit] Deprecated
IMGLY.forceRenderHighResolutionImage
. UseMediaEditViewControllerOptions.forceExport
instead.
- [ImglyKit] Fixed
Theme.tintColor
was not applied toAudioTrimSelectionView
.
- [ImglyKit] Fixed
-[PESDKAnimatedImageView displayLayer:]: unrecognized selector sent to instance
crash for iOS 13 and older.
- [ImglyKit] Added support for custom localization files.
- [VideoEditorSDK] Added basic remote asset support for audio and video clip library. Assets are not cached! It's mainly intended for React Native debug builds which will generate temporary remote URLs for static assets.
- [ImglyKit] Fixed jumping toolbar in the text tool.
- [ImglyKit] Fixed
tintColor
ofMenuCollectionViewCell.iconImageView
ignored on iOS 15. - [ImglyKit] Fixed menu cells would sometimes disappear after transitioning between tools on iOS 15.
- [ImglyKit] Fixed
PESDKGroup
could not be initialized in Objective-C.
- [ImglyKit] Added an opt-out for emoji support because it is not optimized for cross-platform use. It can be disabled with
TextToolControllerOptions.emojisEnabled
andTextDesignToolControllerOptions.emojisEnabled
.
- Updated podspecs to use XCFramework releases instead of fat frameworks which requires CocoaPods version 1.10.0+.
- [VideoEditorSDK] Added video clip library for adding predefined video clips to video compositions.
- [VideoEditorSDK] Added audio tool for adding overlay audio tracks to the edited video.
- [ImglyKit] Fixed occasional weird scrolling behavior of the angle picker in the transform tool by disabling the invisible vertical and horizontal scroll indicators of the
ScalePicker
. - [PhotoEditorSDK] Fixed image adjustments could result in clipped sprites for images with transparent background on devices with Apple A9 SoCs.
- [VideoEditorSDK] Fixed green artifacts in dark regions of video compositions on devices with Apple A9 SoCs.
- [VideoEditorSDK] Fixed
Theme.tintColor
was not applied toVideoTrimSelectionView
. - [VideoEditorSDK] Fixed loading issue for videos where the video track id was different from
1
which caused an empty preview and a crash whenTransformToolControllerOptions.allowFreeCrop
was disabled. - [VideoEditorSDK] Fixed an issue where assets such as stickers or text would not be placed correctly on videos.
- [ImglyKit] Fixed module interface compiler error.
- [VideoEditorSDK] Added composition tool for creating video compositions from multiple video clips.
- [VideoEditorSDK] Added play/pause overlay button to the
VideoEditViewController
. - [VideoEditorSDK] Added sound on/off overlay button to the
VideoEditViewController
which mutes and unmutes the audio in the preview player and removes the audio track for exported videos if audio was muted in the preview.
- [VideoEditorSDK] Changed default trim tool UI to make use of overlay controls and tooltips for time labels. Set
TrimToolControllerOptions.useOverlayControls
tofalse
in order to preserve the old UI. - [VideoEditorSDK] Changed default timeline thumbnail size in the trim tool from 2/3 to 9/16 as this better fits common portrait videos. Set
VideoTrimView.thumbnailWidth
to40
in order to preserve the old size.
- [VideoEditorSDK] Fixed video timeline thumbnails in the trim tool that were not clipped and thus overlapped each other for landscape videos.
- [VideoEditorSDK] Fixed animated stickers are in some cases not paused in the preview when the video is paused.
- [ImglyKit] Fixed analytics events for undo and redo operations in the adjustment tool.
- [ImglyKit] Fixed
ToolbarButton
disabled control state style which used an alpha value of0.2
but should have been0.4
.
- [ImglyKit] Changed default blend mode for
imgly_overlay_vintage
tooverlay
for cross-platform consistency.
- [PhotoEditorSDK] Added factory methods
PhotoEditViewController.makePhotoEditViewController
and[PESDKPhotoEditViewController photoEditViewControllerWith...]
that also create a replacement subclass if there is a replacing class defined byPESDK.replaceClass
. - [VideoEditorSDK] Added factory methods
VideoEditViewController.makeVideoEditViewController
and[PESDKVideoEditViewController photoEditViewControllerWith...]
that also create a replacement subclass if there is a replacing class defined byVESDK.replaceClass
.
- [ImglyKit] Fixed
OverlayButton
s being misaligned when using Right-To-Left languages.
- [VideoEditorSDK] Fixed a crash when transforming videos that are flipped vertically and horizontally.
- [ImglyKit] Added
StickerToolControllerOptions.personalStickerCustomizationClosure
to customize personal stickers.
- [VideoEditorSDK] Fixed a bug where
VideoEditViewControllerDelegate.videoEditViewControllerDidFailToGenerateVideo
has not been called in case that the export background task has been ended by the operating system. - [VideoEditorSDK] Fixed crash for some videos with invalid audio.
- [ImglyKit] Added
TextToolControllerOptions.defaultTextAlignment
to specify the initial alignment of newly added text.
- [ImglyKit] Fixed a bug where
startTime
andendTime
of aTrimModel
were not exposed to Objective-C.
- [VideoEditorSDK] Added
VideoEditViewController.play()
andVideoEditViewController.pause()
which allow to control the video playback.
- [ImglyKit] Fixed a crash when loading smart stickers using a basic license.
- [ImglyKit] Fixed issue where rotating a text design would lead to a crash.
- [ImglyKit] Fixed menu in the transform tool not being aligned with the selected crop aspect when inverting the crop aspect or rotating the asset.
- [ImglyKit] Replaced several fonts with new fonts and added additional new fonts.
- [ImglyKit] Added H264 video codec initializer with the option to specify a
VideoCodecProfileH264
.
- Built with Swift 5.2.4 / Xcode 11.7
- [ImglyKit] Changed
.bringToFront
overlay buttons are now disabled when the selected sprite is already on top.
- [ImglyKit] Added
CameraViewControllerOptions.allowedRecordingOrientations
which allow to specify the orientations in which the camera should record.
- [ImglyKit] Fixed issue where the camera roll button would not be visible in the
CameraViewController
when recording a video.
- [ImglyKit] Fixed issue where the renderer has not been updating the preview correctly when changing the
MediaEditPreviewController.photoEditModel
in a way that more than only the sprite models have been changed at the same time. - [ImglyKit] Improved timely weather data by requesting an update when the editor is about to appear for
WeatherProvider
's that outlive editor invocations.
- Enabled library evolution and module stability which allows to use the SDK from now on with any Xcode 11+ (beta) version.
- [VideoEditorSDK] Selecting sprites won't pause video playback anymore to align behavior with Android. In order to restore the old behavior override
wantsVideoPlayback
ofBrushEditController
,StickerEditController
,TextDesignOptionsToolController
,TextFontToolController
, andTextOptionsToolController
.
- Added experimental XCFramework and Swift Package Manager (SPM) support.
- [ImglyKit] Fixed silent force crop behavior when
TransformToolControllerOptions.allowFreeCrop
andMediaEditViewControllerOptions.forceCropMode
are bothfalse
where the asset would not be automatically cropped to the best matching aspect if its size would not fit one of theTransformToolControllerOptions.allowedCropAspects
. - [ImglyKit] Fixed that the time label would be hidden when specifying
.video
as the first item inCameraViewControllerOptions.allowedRecordingModes
.
- [ImglyKit] Added new
SmartSticker
s for weather to the first sticker category. These are hidden per default whenStickerToolControllerOptions.weatherProvider
is not set. You can use theOpenWeatherProvider
or implement your ownWeatherProvider
.
- [ImglyKit] Fixed unlocalized string for key
pesdk_smart_sticker_clock
warning.
- [ImglyKit] Changed the displayed sticker category name from "Emoticons" to "Stickers".
- [ImglyKit] Added
ToolbarButton.width
which allows to configure a custom width for the toolbar buttons. - [ImglyKit] Added new
MultiImageSticker
which allows to have multiple variations of a sticker that can be cycled by tapping the sticker on the canvas. - [ImglyKit] Added new
SmartSticker
s for weekday, date, time, and clock as first items to the first sticker category.
- [VideoEditorSDK] Added new GIF sticker category and stickers.
- Built with Swift 5.2.4 / Xcode 11.6
- [VideoEditorSDK] Fixed video playback was not paused when exporting an unedited video.
- [ImglyKit] Changed access level of
CameraViewController
'sUIImagePickerControllerDelegate
implementation toopen
in order to allow further customization within subclasses. - [VideoEditorSDK] The original URL of the input video is now returned by the
VideoEditViewControllerDelegate
instead ofnil
when exporting an unedited video in order to align the behavior with PhotoEditorSDK.
- [ImglyKit] Added
TextToolControllerOptions.maximumTextSize
to configure the maximum initial font size for text added within the text tool. - [ImglyKit] Added missing analytics events for adding, selecting, and removing text designs.
- [ImglyKit] Added
CameraController.cameraPosition
to determine the active camera position.
- [ImglyKit] Fixed subclassing of
TextToolController
,TextDesignToolController
,BrushColorToolController
,StickerGestureController
,StickerColorToolController
,StickerEditController
,TextGestureController
,TextColorToolController
, andTextDesignGestureController
which caused undefined symbols for_OBJC_METACLASS_
errors. - [ImglyKit] Fixed image picker in camera would allow selecting media types that are not included in the
CameraViewControllerOptions.allowedRecordingModes
.
- [VideoEditorSDK] Added support for animated GIF stickers. Sticker adjustments (brightness, contrast, saturation) and non-default tint modes are not supported for animated stickers.
- [VideoEditorSDK] Fixed video playback to start at trimmed start position when loading a
PhotoEditModel
or serialization. - [VideoEditorSDK] Fixed crash for videos with invalid audio.
- [VideoEditorSDK] Fixed missing intermediate directories were not created for export filename.
- [ImglyKit] Fixed static frames would not appear or lead to crash.
- [ImglyKit] Fixed dynamic frames would lead to crash if not all patches have been set.
- [ImglyKit] Fixed
error: Couldn't IRGen expression, no additional error
when using thelldb
console.
- Built with Swift 5.2.4 / Xcode 11.5
- [ImglyKit] Changed access level of
AdjustEditController.updateSlider
toopen
in order to allow further customization within subclasses.
- [ImglyKit] Added
MenuCollectionViewCell.cornerRadius
andMenuCollectionViewCell.selectionBorderWidth
which allow customization viaUIAppearance
proxy calls.
- [ImglyKit] Fixed force cropping could be undone.
- [ImglyKit] Changed access level of
Slider.thumbView
,Slider.leftUnfilledTrackView
,Slider.rightUnfilledTrackView
, andSlider.filledTrackView
toopen
in order to allow further customization within subclasses ofSlider
.
- [ImglyKit] Added
UIAppearance
proxy support forSlider.trackHeight
,Slider.trackCornerRadius
, andSlider.thumbSize
.
- Built with Swift 5.2.2 / Xcode 11.4.1
- [ImglyKit] Changed the initial minimum font size for text added with the text tool to
20.0
. In order to return to the old default value and line break behavior setTextToolControllerOptions.minimumTextSize
to1.0
.
- [ImglyKit] Added
TextToolControllerOptions.minimumTextSize
to configure the initial minimum font size for text added with the text tool which affects the automatic line break behavior.
- [ImglyKit] Fixed adding personal stickers would lead to the toolbar being hidden beneath the keyboard in the text and text design tool for iOS versions older than 13.0.
- [ImglyKit] Added a workaround that fixes wrong layout of the navigation bar for iOS 13 devices without a notch when a
MediaEditViewController
is embedded into aUINavigationController
and uses a differentprefersStatusBarHidden
setting as the parent view.
- [ImglyKit] 🚨
ConfigurationBuilder.configure(from:)
methods don't parse the tile configurations forLUTFilter
objects from thelutURI
filename anymore and the default changed from a 8x8 to a 5x5 tile configuration. - [ImglyKit] Added
@available(iOS 11.0, *)
restriction toImageFileFormat.heif
as this has always been noted in the API docs but was not enforced by the compiler.
- [ImglyKit] Added
LUTEffect
initializer for specific tile configurations that does not parse its URL for tile configurations. - [ImglyKit] Added
Configuration.appearanceProxyConfigurationClosure
intended for customUIAppearance
proxy calls. - [ImglyKit] Enabled
SnapGuideView
properties forUIAppearance
proxy calls. - [ImglyKit] Added snap guide colors to the
Theme
.
- [ImglyKit] Added a workaround that fixes black image exports with the iOS 13.4 Simulator in general and all iOS 13.x Simulators running on macOS 10.15.4. Exports of images larger than 4096^2 are still failing to render on the aforementioned iOS Simulator configurations. On real devices everything works as expected.
- Built with Swift 5.2 / Xcode 11.4.
- [VideoEditorSDK] Fixed initial position of the video position seeker when the playback is paused and the trim tool is entered.
- [ImglyKit] Fixed
StickerToolControllerOptions.titleViewConfigurationClosure
not being called for the selected sticker category.
- [ImglyKit] Added missing localizable strings for filter groups.
- [ImglyKit] Fixed focus operation not being centered when the focus tool is applied to a cropped image.
- [ImglyKit] Changed
UICollectionViewDelegate
methods implemented byStickerSelectionController
toopen
instead ofpublic
.
- [ImglyKit] Fixed infinite layout loop when rotating an inverted text design on iOS 13.
- [ImglyKit] Fixed class replacement not working for
BlendModeCollectionViewCell
andStickerCollectionViewCell
. - [ImglyKit] Fixed misplaced sticker bounding box when switching from opacity to color editing mode of a sticker.
- [ImglyKit] Increased the touch area of the color picker controls which were difficult to use at the borders of the color selection views.
- [ImglyKit] Fixed default ordering of the frames for cross-platform consistency.
- [ImglyKit] Fixed accidental drawing while using the color picker in the
BrushColorToolController
.
- Built with Swift 5.1.3 / Xcode 11.3.1.
- [ImglyKit] Fixed overwriting of configuration options when calling a
ConfigurationBuilder.configure*
closure more than once. Existing configuration options are now passed to successive invocations. - [ImglyKit] Fixed text tool and text design tool which would remain active even if the text was deleted.
- [ImglyKit] Fixed switching the camera mode too fast would lead to the blur view appearing permanently and thereby disabling the camera functionality.
- [VideoEditorSDK] Fixed an issue where the frame options tool would show the wrong video frame when playback is paused.
- Built with Swift 5.1.3 / Xcode 11.3.
- [ImglyKit] Added a public initializer for
PhotoEditRenderer
that's accessible with Objective-C. - [ImglyKit] Fixed Objective-C compatibility of
SpriteModel
. - [ImglyKit] Fixed
CGFloat?
properties not being exposed to Objective-C by converting them toNSNumber?
. - [ImglyKit] Fixed rotational snapping of sprites which led to misaligned snapping angles and guides after the image has been rotated with the transform tool.
- [ImglyKit] Fixed
FrameOptionsToolControllerOptions.allowedFrameActions
not being accessible from Objective-C.
- [PhotoEditorSDK] Restricted access level of
PhotoEditViewController.options
topublic
in order to prevent overrides which would likely cause unexpected behavior. - [VideoEditorSDK] Restricted access level of
VideoEditViewController.options
topublic
in order to prevent overrides which would likely cause unexpected behavior.
- [ImglyKit] Fixed animation of the media capturing buttons in the
CameraViewController
when switching the capturing mode from photo to video and vice versa. - [ImglyKit] Fixed slider in the sticker tool which was not updated when multiple stickers with different opacity, brightness, contrast, or saturation values were edited one after the other.
- [ImglyKit] Fixed image preview for the iOS Simulator with Metal support (iOS 13 Simulator running on macOS 10.15) which led to the preview image being displayed upside down.
- [ImglyKit] Fixed image preview in the transform and frame tool for the iOS Simulator with Metal support (iOS 13 Simulator running on macOS 10.15) which led to the display of an empty canvas.
- Built with Swift 5.1.2 / Xcode 11.2.1.
- [ImglyKit] Added configuration option
MediaEditViewControllerOptions.navigationControllerMode
to keep theToolbar
if theMediaEditViewController
or one of its ancestors is a child of aUINavigationController
.
- [ImglyKit] Deprecated
MediaEditViewControllerOptions.useParentNavigationItem
in favor ofMediaEditViewControllerOptions.navigationControllerMode
.
- [ImglyKit] Fixed background color of the menu accessory view to use the
Theme.menuBackgroundColor
. This issue could result in a black gap at the bottom of the screen if the menu accessory view extended below the bottomsafeAreaLayoutGuide
, e.g., when theMediaEditViewController
was embedded in aUINavigationController
.
- Built with Swift 5.1.2 / Xcode 11.2.
- [ImglyKit] Added option to add personal stickers from the camera roll via
UIImagePickerController
. This feature is disabled by default and can be configured withStickerToolControllerOptions
. If the sameAssetCatalog
is used for multiple editor instances and/or for de-/serialization added personal stickers will accumulate in this singleAssetCatalog
instance which isAssetCatalog.shared
per default. In order to remove all added personal stickers useAssetCatalog.removeTemporaryItems()
or create a newAssetCatalog
for every editing session.
- [ImglyKit] Fixed orientation of assets with EXIF metadata.
- [ImglyKit] Default sticker category identifiers were changed for cross-platform compatibility and consistency with filter categories.
pesdk_sticker_asset_emoticonsStickerCategory
was changed toimgly_sticker_category_emoticons
andpesdk_sticker_asset_shapesStickerCategory
was changed toimgly_sticker_category_shapes
.
- [ImglyKit] Added
AssetCatalog
to configure all assets that are available to an editor instance for editing tasks. Per default theshared
instance is used. Use theConfiguration
to setup the asset catalog.StickerCategory.all
,Frame.all
,Effect.all
,Overlay.all
,FontImporter.all
, andTextDesign.all
can still be used but these calls are redirected toAssetCatalog.shared
internally.
- [ImglyKit] Fixed sticker icon resizing based on
StickerToolControllerOptions.stickerPreviewSize
. - [ImglyKit] Fixed broken alpha channel of
imgly_frame_wood_passepartout_thumbnail.png
for source distribution via podspec. - [ImglyKit] Fixed an issue that caused the last used sticker category to not being reselected when adding another sticker.
- [ImglyKit] Fixed Metal compiler flags in podspec for source distribution.
- Built with Swift 5.1 / Xcode 11.0.
- [ImglyKit] Fixed brush not shown in transform and frame tool.
- [ImglyKit] Added
Theme.dynamic
. This theme switches dynamically between the predefined light and dark theme based on the activeUITraitCollection.userInterfaceStyle
(iOS 13 "Dark Mode").
- [ImglyKit] Fixed tint color in
FontSelectorViewController
for the handle button and the selected font when set via the theme. - [ImglyKit] Fixed
MediaEditViewControllerOptions.actionButtonConfigurationClosure
not being called. - [ImglyKit] Fixed race condition for remote asset downloads.
- [ImglyKit] Fixed a crash on iOS 12.1 and below.
- [ImglyKit] Fixed sprites being misplaced in the transform and frame tools.
- [VideoEditorSDK] Fixed an issue where the video would not stop playing while in a color tool controller.
The PhotoEditorSDK.framework
was split into two frameworks, ImglyKit.framework
and PhotoEditorSDK.framework
:
ImglyKit.framework
contains most of the logic that is required for rendering, displaying and editing media.PhotoEditorSDK.framework
contains classes that are specific to photo editing.
A new VideoEditorSDK.framework
was introduced, that uses the same ImglyKit.framework
as PhotoEditorSDK.framework
does. This new framework contains classes that are specific to video editing. For more details please take a look at www.videoeditorsdk.com.
- [ImglyKit] Added a
MediaEditViewController
class that is the superclass forPhotoEditViewController
andVideoEditViewController
. - [ImglyKit] Added a
MediaEditPreviewController
class that is the superclass forPhotoEditPreviewController
andVideoEditPreviewController
. - [VideoEditorSDK] Added a
Video
class for passing videos to the editor. - [VideoEditorSDK] Added a
VideoEditViewController
class for video editing. - [VideoEditorSDK] Added a
VideoEditPreviewController
class for previewing videos. - [VideoEditorSDK] Added a
TrimToolController
class for trimming videos.
- [ImglyKit]
PhotoEditPreviewControllerDelegate
was renamed toMediaEditPreviewControllerDelegate
together with all method names of the protocol. - [ImglyKit] The camera does not automatically present the editor any longer when neither
dataCompletionBlock
norcompletionBlock
was specified. You should always setCameraViewController.dataCompletionBlock
,CameraViewController.completionBlock
andCameraViewController.cancelBlock
. - [ImglyKit] Video recordings that were created with the camera no longer include the applied filter. To restore the old behavior set
CameraViewControllerOptions.writeVideoWithFilterApplied
totrue
. - [ImglyKit]
Bundle.pesdkBundle
was renamed toBundle.imglyBundle
. - [ImglyKit]
MainFlowController.photoEditViewController
was renamed toMainFlowController.mediaEditViewController
. - [PhotoEditorSDK] The
PhotoEditViewController
initializer doesn't have amenuItems
parameter any longer. To update the menu items, please usePhotoEditViewControllerOptions.menuItems
. - [PhotoEditorSDK] The
PhotoEditViewController
is a subclass ofMediaEditViewController
now. - [PhotoEditorSDK] The
PhotoEditPreviewController
is a subclass ofMediaEditPreviewController
now. - [PhotoEditorSDK] The
PhotoEditViewControllerDelegate
protocol now inherits from theMediaEditViewControllerDelegate
, which brings the following changes:photoEditViewController(_ photoEditViewController: PhotoEditViewController, willPresentToolController toolController: PhotoEditToolController)
is nowmediaEditViewController(_ mediaEditViewController: MediaEditViewController, willPresentToolController toolController: PhotoEditToolController)
,photoEditViewController(_ photoEditViewController: PhotoEditViewController, didPresentToolController toolController: PhotoEditToolController)
is nowmediaEditViewController(_ mediaEditViewController: MediaEditViewController, didPresentToolController toolController: PhotoEditToolController)
,photoEditViewController(_ photoEditViewController: PhotoEditViewController, willDismissToolController toolController: PhotoEditToolController)
is nowmediaEditViewController(_ mediaEditViewController: MediaEditViewController, willDismissToolController toolController: PhotoEditToolController)
,photoEditViewController(_ photoEditViewController: PhotoEditViewController, didDismissToolController toolController: PhotoEditToolController)
is nowmediaEditViewController(_ mediaEditViewController: MediaEditViewController, didDismissToolController toolController: PhotoEditToolController)
.
- [PhotoEditorSDK]
PhotoEditViewControllerOptions.configurePhotoEditorViewController(_:)
was renamed toPhotoEditViewControllerOptions.configurePhotoEditViewController(_:)
.
- [PhotoEditorSDK] Removed all deprecated classes and methods.
- Fixed class replacement not working for
SliderTooltip
.
- Added
FilterToolControllerOptions.folderCellConfigurationClosure
to configure cells that represent a folder within the filter tool. - Added an
overlayButtonInsets
property toAdjustToolControllerOptions
,BrushToolControllerOptions
,PhotoEditViewControllerOptions
,StickerOptionsToolControllerOptions
,TextOptionsToolControllerOptions
andTextDesignOptionsToolControllerOptions
to easily modify the overlay button's insets in the corresponding tool controller.
- Designated initializers of
PhotoEditToolController
subclasses are nowpublic
to enable subclassing and thus class replacement of tools.
- Fixed class replacement not working for
MenuListSectionController
subclasses by making all concrete subclasses ofMenuListSectionController
open
. - Fixed
FilterToolControllerOptions.filterCellConfigurationClosure
not being called for all effect cells when using folders.
- Fixed customize color of title label via
titleViewConfigurationClosure
. - Fixed preview of transparent wide color images on P3 displays for iOS 11 and earlier where the transparent background appeared always black.
PhotoEditPreviewController.previewView.backgroundColor
can now be used to change the background color of transparent images in the preview which was always black if this property was set.
- Added a sharpness option to the adjustments tool.
- Fixed class replacement not working for
MenuCollectionViewCell
andColorCollectionViewCell
. - Fixed an ambiguous constraints warning in the brush tool.
- Fixed an ambiguous constraints warning in the overlay tool.
- Fixed a crash when removing fonts from
PhotoEditorSDK.bundle
. - Fixed an issue where the progress indicator would not disappear when passing a
Photo
object initialized with an invalidURL
.
- Remove unused
backgroundColor
inToolControllerOptions
.
- Added optional predefined light color theme and easy to use theming capabilities. The
Configuration
allows now to specify and alter the overallTheme
at a central place. Existing customization options via closures override the properties defined by a theme.
- Fixed
MenuListSectionController
not being subclassable.
- Added
reloadData(completion:)
,performUpdates(animated:completion:)
andreloadMenuItems(_:)
toMenuViewController
to support menu reloading when implementing custom tools.
- Fixed
AdjustToolControllerOptions.adjustToolButtonConfigurationBlock
andAdjustToolControllerOptions.adjustToolSelectedBlock
not being exposed to Objective-C. - Fixed LUT for builtin filter with identifier
imgly_lut_lomo
. - Fixed builtin filter identifiers
imgly_lut_kdynamic
,imgly_lut_gobblin
, andimgly_lut_pro400
for cross-platform serialization. - Fixed default ordering of filters in order to match other platforms.
- Fixed alpha value of sticker shape with identifier
pesdk_sticker_asset_badge28
which was not fully opaque before.
- Added
CameraViewController.locationAccessRequestClosure
. Important: If you currently haveCameraViewControllerOptions.includeUserLocation
set totrue
(the default) and still want photos taken withCameraViewController
to be tagged with the location where the photo was taken, you will have to set this property. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string as soon as location permissions requests appear somewhere in the binary. Since we do not want to force developers integrating the SDK into their app to include a purpose string even with location tagging disabled, this closure was introduced, so that developers can decide for themselves if it is appropriate to request location access.
- Changed all
MenuViewControllerDelegate
methods to beopen
instead ofpublic
. - Changed
MenuListSectionController
toopen
instead ofpublic
.
- Added enhanced rotational and positional snapping for sprites, e.g., stickers, texts, and text designs. Global
SnappingOptions
can be configured with theconfigureSnapping
method of theConfigurationBuilder
.
- If an expired trial license is used the SDK will now resort to the watermark mode instead of purposely crashing the app.
- Fixed blacks and whites adjustments should not affect the alpha channel.
- Fixed issues with duplicate symbols when the host app uses
IGListKit
. - Fixed
PhotoEditViewControllerOptions.actionButtonConfigurationClosure
not being called. - Fixed an issue with
FrameOptionsToolControllerOptions
showing a misaligned part of the photo when the photo is rotated.
- Fixed iOS Simulator issues for Objective-C.
- Built with Swift 5.0 / Xcode 10.2.
- Added
photoEditModel
property toCameraViewController
which allows to conveniently pass the filter settings from the camera to aPhotoEditViewController
in a customdataCompletionBlock
of theCameraViewController
. - Added
ColorPipetteView
toColorPickerViewController
which enables a color pipette tool for everyPipettableColor
item in a color palette. Available color palettes are configured via theavailableColors
array, e.g., in theColorToolControllerOptionsBuilder
,TextColorToolControllerOptionsBuilder
, andBrushColorToolControllerOptionsBuilder
. A pipettable color is added as the first item to the aforementioned default color palettes.
- Fixed a bug in
TextOptionsToolController
where the menu would not display the correct font, text color, background color and alignment of a selected text. - Fixed a bug in
StickerToolController
where the optionaldidEnterToolClosure
andwillLeaveToolClosure
were not executed.
- Added folders to the
FilterToolController
to group related filters together and to reduce clutter in the menu. To disable folders and get back the old behavior, simply setFilterToolControllerOptions.filterGroups
to[]
. - Added our new duotone filters to the default filters in
Effect.all
.
- Changed the display name of a couple of filters. Their identifier remain the same to maintain compatibility with existing serializations.
- Improved performance when interacting with multiple stickers.
- Fixed
TextFontToolControllerOptions.actionButtonConfigurationClosure
to receive a reference to the cell and the matchingFont
object instead of just a string.
- Changed the company name.
- Source code is now compatible with Swift 5.
- Fixed camera crop to square preview view.
- Fixed sticker tint modes with alpha values other than one.
- Added
Effect
type as the base class for any filter effect that can be applied to an image. - Added new duotone filter effect
DuoToneEffect
.
- The
PhotoEffect
class has been deprecated. Its initializers have been split into two newEffect
subclasses. TheLUTEffect
is the most commonly used filter effect based on an image-based lookup table (LUT) and theCoreImageEffect
allows to use any registered Core Image filter. - All occurrences of
photoEffect
have been renamed toeffect
. Backward-compatible interfaces are introduced and marked as deprecated. Xcode will provide renaming suggestions.
- Fixed rare crash when opening the frame tool.
- Fixed image export with colorized stickers.
- Fixed deserializations with colorized stickers.
- Fixed readability issue with the text input field in the text design tool. The text input string does not change its color anymore.
- Added
MenuCollectionViewCell
which is used for all cells throughout the main menus. This consolidates multipleUICollectionViewCell
subclasses which were used previously and enables easier customization. - Added undo and redo to
AdjustToolController
. - Added a reset button to
AdjustToolController
. - Added a reset button to
TransformToolController
. - Added a replace button to
StickerOptionsToolController
. - Added an opacity button to
StickerOptionsToolController
. - Added
FrameOptionsToolController
to modify the width and opacity of a frame.
- The design of the cells in the main menus was slightly changed and unified across tools.
- The design of the title in the lower toolbar was slightly changed to an all caps label with more character spacing.
- Updated the Text Design tool to allow adding multiple Text Design objects.
- Updated the Text Design inversion mechanism so that the user is able to adjust the padding of an inverted Text Design.
- Replaced the blend mode selection view in
OverlayToolController
with a button to toggle between available blend modes. - Multiple icons were replaced across the SDK.
- Instead of passing an array of
UIColor
objects and an array of matchingString
objects, describing the name of the color, the SDK now expects an array ofColor
objects. - The default hardness of a new brush stroke was changed from
1.0
to0.5
. DefaultLogger
was updated to useOSLog
on iOS 10.0 and later instead of regularprint
statements.- Changed the default tool order so that the Focus tool is next to the Adjust tool.
- Fixed a bug in the brush tool, where the size of the stroke's preview and an actual stroke on the canvas would mismatch.
- The
StickerToolController
now opens with the previously selected sticker category. - Excess padding on the left and right of
TextDesignSunshine
was removed. TextDesignBlocksLight
now displays decorative lines as seen in its preview.- Fixed a bug where the output image would be black when adding a sticker and tinting it using the
.colorized
tint mode on iOS 12.0 and devices supporting Metal. - Fixed a bug where the camera preview would be darker than the actual image on iPhone XS devices.
- Removed
ActivityBorderedCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
BorderedCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
IconBorderedCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
IconCaptionCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
LabelBorderedCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
LabelCaptionCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
LabelIconBorderedCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed
FilterCollectionViewCell
in favor ofMenuCollectionViewCell
. - Removed all previously deprecated API.
- Removed all
AsNSNumber
properties. These are now exposed to Objective-C with their regular name (e.g.allowedAdjustOverlayActions
instead ofallowedAdjustOverlayActionsAsNSNumbers
. - Removed mapping between old localization keys and new localization keys.
- Fixed a bug where the camera preview would be distorted.
- Fixed an issue where setting the background color of the preview view would not work when using the Metal renderer.
- Fixed a very rare deadlock when loading fonts caused by a bug in iOS 10.
- Fixed an issue where the filter thumbnail cache would use more memory than required.
- Added
TransformToolControllerOptions.scalePickerContainerViewConfigurationClosure
to enable customization of the scale picker's container view.
- Fixed an issue with missing text when deserializing a text design.
- Fixed rendering issues on devices running iOS 12 but that do not have an A8 chip at least.
- Fixed live filters not working in the camera.
- The drop shadow of the UI controls to modify the focus in the focus tool had an y-offset of 1, which doesn't make sense because the controls can be rotated. This has been fixed by changing the y-offset to 0.
- Fixed a bug where it was possible to make a text larger than the allowed maximum width.
- Fixed a bug where the position of text in the preview and in the final image would not match.
- Fixed a crash when clearing the text of an already created text design.
- Fixed an issue with emojis in multiline text designs.
- Migrated to Swift 4.2 and built the SDK with Xcode 10.0.
- Updated the renderer to use Metal instead of OpenGLES on iOS 12 and supported devices.
- Added
PhotoEditViewController.presentTool(for:)
to programmatically present the tool for a givenToolMenuItem
. This can be used to directly transition to one of the tools when presenting the editor.
- Changed all localization keys throughout the SDK to match the pattern
pesdk_context_type_description
wherecontext
is usually the tool where the string appears (e.g.focus
),type
represents the type of the string such asbutton
ortext
anddescription
represents the actual use of the string, such asbrightnessIntensitySliderLabel
. This scheme is now used on the other platforms as well. We're falling back to the old localization keys in case the new ones can't be found to not break backwards compatibility, but we suggest you adopt the new keys as soon as possible.
- Fixed a crash when done drawing a stroke in the brush tool.
- Added a linear focus mode to the focus tool.
- Added a gaussian focus mode to the focus tool.
- Added temperature adjustments to the adjustment tool.
- Added blacks adjustments to the adjustment tool.
- Added whites adjustments to the adjustment tool.
- The text tool now uses the same text settings of the last selected text when creating new texts.
- The
FocusType
type has been deprecated because it used incorrect namings. It is replaced by theFocusMode
type, which uses the same namings as the PhotoEditor SDK on HTML5 and Android. More specificallyFocusType.linear
is nowFocusMode.mirrored
andFocusType.gradient
is nowFocusMode.linear
,.radial
and.gaussian
remain the same. - The SDK can now be used for testing purposes without unlocking it with a license. A watermark image will be displayed above the edited photo in such cases.
- Added the option to adjust the gamma in the adjustments tool.
- Fixed a crash when instantiating a
PESDKPhotoEditMenuItem
with Objective-C for a tool that is not licensed.
- Added
PhotoEditViewController.serializedSettings(withImageData:)
which enables you to specify whether or not to include image data in the generated JSON. It is recommended that the image is not included in the JSON but saved as a separate file. - Added
PhotoEditViewControllerOptions.useParentNavigationItem
, allowing for thePhotoEditViewController
to be embedded inside a custom container view controller inside aUINavigationController
. - Added accessibility support to the Text Design tool.
- Changed serialization to require a
Photo
object instead ofUIImage
. This improves memory usage. - Improved serialization performance when not including image data in the serialization.
- Changed the Text Design Tool icon.
- Fixed a bug where the edit screen would not be dismissed when changing the text of an already added text design from within the
TextDesignOptionsToolController
.
- Fixed multiple layout issues in the text design tool.
- Added support for gaussian and gradient focus to the renderer, to support cross-platform (de-)serialization.
- Added support for custom frame sizes to the renderer, to support cross-platform (de-)serialization.
- Fixed an issue with an incorrect deserialized focus gradient size.
- Fixed a layout issue in the
FontSelectorView
.
- Fixed a retain cycle in the serialization test suite.
- Fixed a bug when deserializing an unknown type of focus.
- Fixed a bug that added a little rotation to stickers and text when the image is flipped, the state is serialized and then again deserialized.
- Fixed a memory issues with labels that have a huge height by limiting the maximum allowed height.
- Fixed a bug where the UI would become unresponsive when the editor is embedded in an
UINavigationController
and the user very quickly closes a tool after opening it. - Fixed a bug in the filter and focus shaders that prevented the iOS 12 shader compiler from compiling the shaders.
- Fixed a race condition when setting
StickerCategory.all
. - Fixed a race condition in
PaintingFragment
. - Fixed a layout bug when embedding
PhotoEditViewController
in aUINavigationController
with an opaque navigation bar. - Fixed an issue where drawing a new path in the brush tool would flicker.
- Fixed an issue where deserializing a brush would not load its first point.
- Fixed an issue where drawing a dot in the brush tool was not possible.
- Fixed an issue where
renderPipelineBlock
was not called during the high resolution rendering. - When embedding the
PhotoEditViewController
in anUINavigationController
, thetintColor
,imageEdgeInsets
andbackgroundImage
properties of the toolbar buttons are copied to the buttons in the navigation bar.
- Fixed an issue with iTunes Connect not accepting the build when integrating the SDK via CocoaPods.
- Fixed a bug where setting a title on a discard or apply button would not work when embedding the
PhotoEditViewController
in aUINavigationController
. - Fixed a crash when setting
StickerCategory.all
to an array of sticker categories with duplicate titles while theStickerToolController
was visible.
- Fixed a crash when increasing the width of text too much.
- Fixed an issue with color spaces. Colors are now always displayed correctly and the exported image will have the Display P3 color space on supported devices. Some filters still do not support wide color gamuts and clamp to the sRGB gamut. This will be fixed in a future update.
- Fixed a crash when updating stickers or sticker categories from a thread different than the main thread while the sticker tool was visible.
- Removed the new -Osize Swift optimization mode for now, because iTunes Connect rejects binaries built with it.
- Added support for HEIF image exports. See
PhotoEditViewControllerOptions.outputImageFileFormat
for more details. - Added backend support for gamma correction.
- Built with Swift 4.1 / Xcode 9.3.
- Switched from
Float
toDouble
in all photo edit and serialization models, because converting anNSNumber
implicitly toFloat
(e.g.NSNumber(0.26) as? Float
) returnsnil
with Swift 4.1 if it can't be represented exactly by a float. - When updating
StickerCategory.all
while the sticker selection tool is visible, it now automatically reloads the available categories and stickers.
- Fixed some minor layout bugs on iPhone X.
- Fixed an issue where the dSYM file would not be integrated into the final app when using CocoaPods.
- Fixed an issue with the SoftLight blend mode not looking as expected.
- Fixed an issue with the brush not respecting the hardness when deserializing.
- Fixed an issue with the first path of a brush not being drawn when deserializing.
- Fixed an issue with the radial blur being misplaced when deserializing.
- Fixed an issue with overlays being misaligned.
- Added an option to show a close button in the
CameraViewController
. SeeCameraViewControllerOptions. showCancelButton
,CameraViewControllerOptions.cancelButtonConfigurationClosure
andCameraViewController.cancelBlock
for more details. - Added full support for right-to-left languages.
- Fixed an issue where the flash icon would not be visible while the camera was in video mode.
- Fixed an issue where all Objective-C bridged
SpriteModel
s were of typePESDKSpriteModel
instead of their concrete subclasses. - Fixed an issue with the toolbar having the wrong size while the keyboard was active on an iPhone X.
- Fixed an issue where focus would not work in the camera after switching from back to front camera.
- Fixes an issue with the transform tool not rotating correctly.
- Fixes an issue where an overlay would not be applied when selecting the 'Normal' blend mode.
- Fixes an issue with the size of rotated stickers on iOS 10.
- Overlays and blur handle transparency correctly now.
TextFontToolControllerOptions.fontSelectorViewConfigurationClosure
andTextFontToolControllerOptions.handleButtonConfigurationClosure
work as expected now.- Fixes an issue with undoing brush strokes.
- Fixes an issue where the undo or redo buttons would be active although there was nothing to undo/redo.
- Fixes a bug where video recording would take a long time to stop on older devices.
- Fixes a rare crash with the license checker on iOS 9.
- Added a check that verifies that no two assets have the same identifier.
- Added a
Photo
class that wraps different types of image data. AddedPhotoEditViewController(photoAsset:configuration:menuItems:photoEditModel:)
andPhotoEditPreviewController(photoAsset:photoEditModel:)
and deprecated all previous initializers of both classes in favor of those. Please take a look at the API documentation for thePhoto
class, as using it correctly can have a huge impact on the memory footprint of the SDK. - Added
accessibilityIgnoresInvertColors
where needed. - PNG support, see
PhotoEditViewControllerOptions.outputImageFileFormat
for more details. - Added
PESDK.renderPipelineBlock
which can be used to modify each stage of the render pipeline.
- The top screen edge system gesture is now deferred to avoid conflicts with the transform tool.
- The touchable area for
leftButton
andrightButton
in the toolbar is wider now. - Removed all server calls for enterprise licenses.
- Fixed invalid license check in
BrushColorToolController
andTextOptionsToolController
. - Improved performance and memory usage.
- Fixed a bug where
FrameToolControllerOptions.cellConfigurationClosure
would not be called.
- Fixed a crash when narrowing the text bounding box while zoomed in on the image.
- Added haptic feedback for supported devices.
- Added class replacement support for
StickerImageView
,FrameImageView
,SpriteLabel
,Painting
andCanvasView
.
- Made the
BrushSpriteModel
initializers public.
- Fixed a bug where custom fonts would not be loaded.
- Fixed an issue where sticker and sticker category thumbnails would sometimes have lower resolution.
- Added the possibility to change a sticker's brightness, contrast and saturation. Take a look at
Sticker.allowBrightnessAdjustment
,Sticker.allowContrastAdjustment
,Sticker.allowSaturationAdjustment
andStickerAction.brightness
,StickerAction.contrast
,StickerAction.saturation
for more details. - iPhone X support for
CameraViewController
. - Added
TextToolControllerOptions.dimmingViewConfigurationClosure
.
Font
expects anURL
instead of aString
now.
- Fixed a misplaced title view on iOS 9 when embedding the
PhotoEditViewController
inside aUINavigationController
. StickerToolController
displays the currently selected sticker category as its title again.- The color picker's saturation and brightness picker updates as expected now when saturation is set to 0 and the user drags the hue picker.
ColorPickerViewController
andFontSelectorViewController
didn't calladdChildViewController(_:)
anddidMove(toParentViewController:)
for their containedSpriteEditController
, resulting in layout issues.
- Fixed a bug where static frames would not be shown.
- Made
PhotoEditViewController.init(photo:data:configuration:menuItems:photoEditModel:)
public to enable subclassingPhotoEditViewController
. - Fixed new warnings generated by Xcode 9.1 beta.
- Fixed a bug where undo and redo would not work correctly when drawing out of bounds within the brush tool.
- Full support for iOS 11 and Swift 4.
- Added rotation gesture support to
FrameToolController
(disabled by default). - Added serialization format v3.0.0, which can be used to serialize and deserialize edits across all platforms.
- Added support for the iPhone X to
PhotoEditViewController
.
- Completely refactored the sprite handling code. Sprites (stickers, text, brush and frames) are now directly rendered on top of the image instead of rendering a view snapshot. This results in better looking images, better performance and more robust code.
- Completely refactored
PhotoEditViewController
and allPhotoEditToolController
subclasses. We make heavy use of composition and container view controllers now, leading to better support for customizations and custom user interfaces. - All view controllers and views can be replaced by a custom subclass using
PESDK.replaceClass(_:with:)
for even better customization options. - Undo and redo is now supported by all tools. The sticker, text and brush tools continue to have a local undo/redo stack in addition to the global undo/redo stack.
- Fixed an issue where the selected crop rectangle would change after tapping the apply button in the transform tool.
- Fixed an issue where focus would change its appearance and position after transform.
- Fixed an issue where the color saturation and brightness picker would sometimes not update while dragging the hue picker.
- The
PhotoEditViewController
can now be pushed onto a navigation controller that uses a translucent navigation bar. - Fixed various layout issues with the transform and frame tools.
- Fixed a crash when quickly switching between a sticker and text.
- Removed the transparent color from the default color palette for text color and brush color.
- The
ToolbarController
class has been removed. An instance ofPhotoEditViewController
can now be used directly.
- Fixed a layout issue in tool controllers when zooming is disabled.
- Fixed a memory issue while deserializing.
- Fixed an issue in the transform tool where the selected crop rectangle would sometimes not match the actual crop rectangle.
- Fixed an issue with the image renderer emitting a warning.
- Serialization version 2.0.0 has been deprecated in this release and will not be supported by future versions of the SDK. Please use PhotoEditor SDK 8.0 with serialization version 3.0.0 instead.
PhotoEditViewController
has a new property calledhasChanges
, which istrue
if a user applied any changes to a photo.StickerToolControllerOptions
has a new property calleddefaultStickerCategoryIndex
that can be used to specify the index of the initially selected sticker category.- All
UICollectionViewCell
subclasses can be replaced with custom subclasses usingConfiguration
'sreplaceClass(_:replacingClass:moduleName:)
method.
TransformToolController
now sends a.transformStraightenAngleChange
analytics event for changes of the straighten angle.TransformToolController
now includes.cropRect
,.straightenAngle
and.aspectRatio
attributes in its.applyChanges
analytics event.- When adding or removing a sticker a
.stickerAdd
or.stickerRemove
analytics event is sent with the associated sticker as a.sticker
attribute. Those events are also sent when adding or removing a sticker by tapping the undo/redo buttons. - When adding or removing text a
.textAdd
or.textRemove
analytics event is sent with the associated text as a.text
attribute. Those events are also sent when adding or removing text by tapping the undo/redo buttons. TextOptionsToolController
now includes.text
,.font
,.textColor
,.backgroundColor
and.alignment
attributes in its.applyChanges
analytics event.
CameraViewControllerOptions
includes aincludeUserLocation
property now that istrue
by default. It can be used to stop the camera from asking for the user's location.
LoggerProtocol
is now aclass
protocol because loggers are required to be reference types in the current implementation.
- Fixed several smaller bugs regarding deserialization.
- Sometimes the cropping area would be resized while modifying the straighten angle.
- Memory is not copied twice anymore during painting fragment restoration.
- The project compiles with Xcode 9 now.
- The camera tags photos with their location now. This only works when using
Data
instances instead ofUIImage
instances to pass the photo around because those strip EXIF data. SeeCameraViewController.dataCompletionBlock
for more details. - We added a default confirmation dialog when dismissing the editor with changes pending. This can be changed or disabled by setting
PhotoEditViewControllerOptions.discardConfirmationClosure
.
- The preview image is now automatically resized when a slider overlays the preview at the bottom, so that is always completely visible.
- We replaced the gaussian blur used in the focus tool with a lens blur like effect for much better looking photos. This does not work on the following older devices where we continue to use a gaussian blur due to performance issues:
- iPad mini 1st, 2nd and 3rd gen
- iPad 2nd and 3rd gen
- iPhone 4S
- iPod touch
- Fixed various issues with the serialization and deserialization features.
- Fixed an issue with different color spaces used for the preview and the thumbnails in the filter tool.
- Stickers now use anti-aliasing.
- The icon of the 'No Frame' cell in the frame tool is now tinted with the cell's
tintColor
to better match other cells. - The label of the 'Magic' cell in the main menu is now tinted with the cell's
tintColor
when highlighted to better match other cells. - The
Slider
now sends a.touchUpInside
event after a.touchDown
event has been sent without dragging in between. - When adding a frame to a photo it would sometimes not completely cover the preview image (by about 1 px).
- When selecting a sticker with its
tintMode
set to.none
and then dismissing theStickerOptionsToolController
, the color option would be visible for a split second during the dismissal animation. - The
BoxGradientView
andCircleGradientView
now only draw themselves while visible, resulting in a minor performance improvement. - Sprites didn't have the correct position for a split second when opening the frame tool.
- Sprites would be rotated in the wrong direction when the photo has been flipped.
- Text bounding box resizing would be inverted if the image has been flipped and rotated.
- Added the ability to zoom using a pinch gesture within the
CameraViewController
.
- The icon of the 'No Overlay' option in the overlay tool was not using its @2x and @3x variants.
- Fixed a bug with the new filters and adjustments.
- Fixed interface rotation support.
- The SDK has been renamed from
imglyKit
toPhotoEditorSDK
and all class prefixes have been renamed fromIMGLY
toPESDK
. Likewise the CocoaPod has been renamed toPhotoEditorSDK
. - We now ship the framework as a DMG file and include the dSYM file and bcsymbolmaps for better debugging. To integrate the dSYM into your final app, please follow the updated manual integration guide.
- The
PESDK.shared
singleton has been removed. All of its properties are now static properties on thePESDK
class. - The default progress view must be set using the static
PESDK.progressView
property instead of theConfiguration
closure. - The integrated fonts have been changed.
- The
AdjustToolController
has been improved for much better looking and faster adjustments. - We were able to significantly decrease the size of our filter's lookup images while also improving the filter's performance.
- All asset names have been changed to a consistent naming scheme.
- The overall look and feel of the
FrameToolController
has been improved. - Custom stickers are now added by setting
Sticker.all
, custom fonts are added by settingFontImporter.all
, custom frames are added by settingFrame.all
and custom overlays are added by settingOverlay.all
instead of using theConfiguration
class.
- Serialization and deserialization has been added. Because of this many classes (e.g.
Sticker
,Frame
) now require anidentifier
. For more information please see the documentation. - The
OverlayToolController
tool has been added, which can be used to add overlays to a photo. Please see the documentation for more information. - A custom logger with varying log levels was added. See documentation for more information.
- The
Sticker
class now supports.colorized
as itstintMode
. See the API documentation for more information. - A 3:2 crop aspect has been added to
TransformToolController
's defaults. - An Emoticon and a Shapes sticker set has been added.
TextFontToolControllerOptions
now has afontSelectorViewConfigurationClosure
property and ahandleButtonConfigurationClosure
property for better customization.StickerToolControllerOptions
now has astickerPreviewSize
property to adjust the size of the stickers in the preview.
- The Toy sticker set has been removed.
- The button to show/hide the font selector view within the
TextFontToolController
now respects the view'stintColor
. - Full accessibility support has been restored.
- With the color picker expanded you can now tap anywhere above it to dismiss the color picker.
- We restored iOS 8 compatibility in this release. Please note that this only means that the framework can be integrated into a target with iOS 8 as its deployment target. However most classes and especially all view controllers are not available on iOS 8. We strongly advise that you disable any editing functions for users running iOS 8.
- We replaced the set of included fonts with much better looking fonts.
- Fixed a crash when adding text. This was introduced by the Swift 3.1 compiler, see SR-4393 for more details.
- Fixed an issue with the
forceCropMode
setting.
- This version is compiled with Swift 3.1 and can be used with Xcode 8.3. It does not contain any other changes.
- Fixed a scaling issue regarding backdrops.
- Sticker and text overlays have a bigger touch area so that they are easier to grab.
- Fixed a rare crash in
CameraViewController
that occurred when disabling focus lock while deallocating the controller.
- Added a
discardConfirmationClosure
property toPhotoEditViewControllerOptions
that is called when tapping the cancel button while changes are applied to the image. - Zooming is now enabled in all tools except for the focus tool.
- The overlay buttons (i.e. undo, redo, etc.) in the sticker, text and brush tool have been moved to the bottom.
StickerTintMode.tint
has been renamed toStickerTintMode.solid
.StickerTintMode.ink
has been renamed toStickerTintMode.colorized
.- When adding long text the created label breaks the text into multiple lines if the font size would be too small otherwise.
IMGLYSetLocalizationDictionary
has been replaced byPESDK.localizationDirectory
.IMGLYSetLocalizationBlock
has been replaced byPESDK.localizationBlock
.IMGLYSetBundleImageBlock
has been replaced byPESDK.bundleImageBlock
.
DefaultProgressView
was not positioned correctly when used in an iPad Split View environment.- The menu collection views were not positioned correctly when used in an iPad Split View environment.
- Fixed warnings that are generated by SwiftLint 0.16.1.
- Moved the overlay image generation to a background queue, so that the progress view appears immediately when the user taps the save button.
- Fixed an ambiguous constraints warning in
CameraViewController
. - Fixed an issue where the loading progress view would disappear while presenting the editor.
- Added an option to change the default color of newly added text (see
TextToolControllerOptions.defaultTextColor
). - A progress view is displayed while generating the preview image now.
- Tinting of stickers can be enabled on a per sticker basis (see
Sticker.tintMode
). - Crop Aspect Ratios can be rotated by tapping on an already selected crop aspect (see
CropAspect.isRotatable
).
- Changed the default icon of the transform tool.
- The magic tool displays a selected state when active.
- The
.straighten
option has been removed from the default options ofTextOptionsToolController
andStickerOptionsToolController
. - The
.flip
option has been removed from the default options ofTextOptionsToolController
. - The alignment, bring to front, straighten and flip buttons within
TextOptionsToolController
were moved from an overlay into the menu. - When resizing text the bounding box of the text becomes wider along with the font size.
- While the
BrushColorToolController
is active the user can continue to paint in the canvas. - Editing text works by just single tapping on an already selected label instead of long pressing.
- The delete button within the brush tool was moved to the top, the bring to front button was moved from an overlay into the menu.
- The flip, straighten and bring to front buttons within
StickerOptionsToolController
were moved from an overlay into the menu.
- Fixed a crash that occurred when opening the transform tool very quickly after presenting the editor.
- Fixed an issue with the brush tool that occurred when opening the brush very quickly after presenting the editor.
- Fixed an issue where the progress view would not disappear when tapping the save button.
- Fixed an issue regarding the frame tool and rotated images.
- Fixed a bug where a crop would sometimes be applied although the user tapped the cancel button.
- When changing a text the changes are reflected in the label while typing.
- Fixed a crash in
CameraController
.
- Support for wide color images. More information is available here.
- Added redo support and optimized undo support. Each time the sticker, text or brush tool is openend, a new undo/redo stack is created and local changes within those tools can be un- and redone. The
PhotoEditViewController
also has support for undo and redo and performs all undo or redo operations of the tools mentioned above combined, either step by step or tool by tool (seePhotoEditViewControllerOptions.undoStepByStep
).
M_PI
has been replaced by.pi
,FLT_EPSILON
has been replaced by.ulpOfOne
- Adding a new sticker from within the
StickerOptionsToolController
now opens the already instantiatedStickerToolController
that was passed toPhotoEditViewController
instead of creating a new instance. - The blur radius specified in the
FocusToolController
is now relative to the smaller side of the image instead of an absolute value, which means that the final output image looks like the preview image.
- Fixed a crash that occurred when setting
CameraViewControllerOptions.showFilters
tofalse
.
- Fixed a crash in
CameraViewController
. - The
photoActionButtonConfigurationClosure
closure was not called initially. - Changing the
tintColor
of the button to take a photo works now.
- Added default intensities for blend modes.
- Changed some
enum
s to lower case to match Swift 3.0 naming conventions.
- Fixed a memory leak in
CameraViewController
. - Fixed a memory leak in
FrameToolController
. - Fixed a scaling issue for backdrop images.
- Fixed the Podspec so that the resource bundle is not added twice to projects that use CocoaPods to integrate the SDK.
- A new API to integrate the SDK into your analytics. See
AnalyticsClient
andPESDK.shared.analytics
for more details. - Added an option to set a backdrop image (
backdropImage
), a blend mode (backdropBlendMode
) and an intensity (backdropIntensity
) for it toPhotoEditModel
.
- Fixed a bug regarding image orientation that occurred when saving an unedited image. The image that was passed to
PhotoEditViewController
is now passed back to the delegate untouched when saving and image without any modifications.
- Dynamic frames, which are generated during runtime and adjust to the image based on a given set of rules, similar to 9-patch images. See
CustomPatchFrameBuilder
for more information.
- Frames participate in the bring-to-front behavior so that stickers, text and brush can be moved behind or in front of frames.
- Licensing has been improved to support multiple bundle identifiers within one license.
- Licensing
- Stickers can be grouped into individual categories and their color can be changed by the user.
- New initializers for
PhotoEditViewController
:init(data: Data)
,init(data: Data, configuration: Configuration)
andinit(data: Data, menuItems: [MenuItem], configuration: Configuration)
which allow passing an image as data in which case EXIF information can be preserved. PhotoEditModel
is a Swiftstruct
now. When using Objective-C you can useIMGLYBoxedPhotoEditModel
instead where needed.
- The crop UI has been completely revised and supports arbitrary rotations now.
- Updated the UI of the focus tool so that the user can change the width of the focus gradient.
- Updated the overall look and feel of the UI.
- Custom fonts can be added to the SDK.
- Many performance improvements.
- Asset datasources support remote sources out of the box now.