Configure Brush
VideoEditor SDK supports several configuration options for the BrushToolController
allowing flexible adaptation to different needs and use cases.
For a detailed explanation of how to configure different editor views, refer to this guide.
allowedBrushTools
#
allowedBrushTools
#By default, all available brush tools are enabled. For this example only a couple are enabled.
defaultBrushColor
#
defaultBrushColor
#The default color of the brush stroke is UIColor.white
. If you can anticipate that your use case requires a different default color you can set the defaultBrushColor
.
defaultBrushSize
#
defaultBrushSize
#Similarly, the size of the brush is set at 5% relative to the smaller side of the video by default. In our example, we prefer to set it to an absolute size of five pixels.
availableColors
#
availableColors
#In order to customize the available color palette we need to configure the BrushColorToolController
setting the option availableColors
to an array of Color
objects.
Here, we only provide a small selection of colors as might be sensible for an annotation use case.
import UIKitimport VideoEditorSDKclass VideoBrushConfigurationSwift: Example, VideoEditViewControllerDelegate {override func invokeExample() {// Create a `Video` from a URL to a video in the app bundle.let video = Video(url: Bundle.main.url(forResource: "Skater", withExtension: "mp4")!)// Create a `Configuration` object.let configuration = Configuration { builder in// Configure the `BrushToolController` which lets the user// draw on the video.builder.configureBrushToolController { options in// By default all available brush tools are enabled.// For this example only a couple are enabled.options.allowedBrushTools = [.color, .size]// By default the default color for the brush stroke is// `UIColor.white`. For this example the default color// is set to `UIColor.black`.options.defaultBrushColor = UIColor.black// By default the default brush size is set to 5% of the// smaller side of the video.// For this example the default size should be absolute.options.defaultBrushSize = FloatValue.absolute(5.0)}// Configure the `BrushColorToolController` which lets the user// change the color of the brush stroke.builder.configureBrushColorToolController { options in// By default the editor provides a variety of different// colors to customize the color of the brush stroke.// For this example only a small selection of colors is enabled.options.availableColors = [Color(color: UIColor.white, colorName: "White"),Color(color: UIColor.black, colorName: "Black"),Color(color: UIColor.red, colorName: "Red")]}}// Create and present the video editor. Make this class the delegate of it to handle export and cancelation.let videoEditViewController = VideoEditViewController(videoAsset: video, configuration: configuration)videoEditViewController.delegate = selfvideoEditViewController.modalPresentationStyle = .fullScreenpresentingViewController?.present(videoEditViewController, animated: true, completion: nil)}// MARK: - VideoEditViewControllerDelegatefunc videoEditViewControllerShouldStart(_ videoEditViewController: VideoEditViewController, task: VideoEditorTask) -> Bool {// Implementing this method is optional. You can perform additional validation and interrupt the process by returning `false`.true}func videoEditViewControllerDidFinish(_ videoEditViewController: VideoEditViewController, result: VideoEditorResult) {// The user exported a new video successfully and the newly generated video is located at `result.output.url`. Dismissing the editor.presentingViewController?.dismiss(animated: true, completion: nil)}func videoEditViewControllerDidFail(_ videoEditViewController: VideoEditViewController, error: VideoEditorError) {// There was an error generating the video.print(error.localizedDescription)// Dismissing the editor.presentingViewController?.dismiss(animated: true, completion: nil)}func videoEditViewControllerDidCancel(_ videoEditViewController: VideoEditViewController) {// The user tapped on the cancel button within the editor. Dismissing the editor.presentingViewController?.dismiss(animated: true, completion: nil)}}