Skip to content

raykle/TOCropViewController

 
 

Repository files navigation

TOCropViewController

TOCropViewController

CI Status Version License Platform

TOCropViewController is an open-source UIViewController subclass built to allow users to perform basic manipulation on UIImage objects; specifically cropping and some basic rotations. It has been designed with the iOS 8 Photos app in mind, and as such, behaves in an already familiar way.

Features

  • Crop images by dragging the edges of a grid overlay.
  • Rotate images in 90-degree segments.
  • Clamp the crop box to a specific aspect ratio.
  • A reset button to completely undo all changes.
  • iOS 7/8 translucency to make it easier to view the cropped region.
  • The choice of having the controller return the cropped image to a delegate, or immediately pass it to a UIActivityViewController.
  • A custom animation and layout when the device is rotated to landscape mode.
  • Custom 'opening' and 'dismissal' animations.
  • Localized in 14 languages.

Technical Requirements

iOS 7.0 or above.

Installation

pod 'TOCropViewController'

Manual

Add the files in the TOCropViewController subfolder to your Xcode project.

How do I use it?

TOCropViewController operates around a very textbook modal setup. As such, it cannot be pushed to a UINavigationController stack, and instead must be presented as a modal dialog on an existing view controller.

UIImage *image = ...; //Load an image

TOCropViewController *cropViewController = [[TOCropViewController alloc] initWithImage:image];
cropViewController.delegate = self;
[self presentViewController:cropViewController animated:YES completion:nil];

Optionally, TOCropViewController also supports a custom presentation animation, providing more visual context to the user. Please see the sample app for a demonstration on how to implement this.

How does it work?

While traditional cropping UI implementations will usually just have a dimming view with a square hole cut out of the middle, TOCropViewController goes about its implementation a little differently.

TOCropViewController

Since there are two views that are overlaid over the image (A dimming view and a translucency view), trying to cut a hole open in both of them would be rather complex. Instead, an image view is placed in a scroll view in the background, and a copy of the image view is placed on top, inside a container view that is clipped to the designated cropping size. The size and position of the foreground image is then made to match the background view, creating the illusion that there is a hole in the dimming views, and minimising the number of views onscreen.

License

TOCropViewController is licensed under the MIT License, please see the LICENSE file.

Packages

No packages published

Languages

  • Objective-C 99.6%
  • Ruby 0.4%