Tool class with high imitation of cutting function of little red book app. Juejin Blog
高仿小红书App裁剪功能的工具:
1.集成类似小红书基本的裁剪功能(自定义裁剪比例 + 360°任意旋转);
2.API简单易用;
3.切换裁剪比例带有动画过渡,不会那么生硬;
4.可异步可同步裁剪,并且可压缩。
Is so easy:
// 1.Import
import JPCrop
// 2.Initialize
let frame = CGRect(...
let configure = Croper.Configure(image)
let croper = Croper(frame: frame, configure)
// 3.Add to superview, done!
view.insertSubview(croper, at: 0)
/**
* originAngle: Rotation origin angle.
* There are four origins: 0°/360°, 90°, 180°, 270°
* The rotatable angle range of each origin angle is: -45° ~ 45°
*/
// Rotate (Rotatable angle range: Based on the current origin angle -45° ~ 45°)
croper.rotate(angle)
// Rotate left (originAngle - 90°)
// animated: with animation or not
croper.rotateLeft(animated: true)
// Rotate right (originAngle + 90°)
// animated: with animation or not
croper.rotateRight(animated: true)
// Show grid before rotating
// animated: with animation or not
croper.showRotateGrid(animated: true)
// Hide grid after rotating
// animated: with animation or not
croper.hideRotateGrid(animated: true)
// rotateGridCount: Number of grid in rotation. (ver, hor)
// animated: with animation or not
croper.updateCropWHRatio(3.0 / 4.0, rotateGridCount: (6, 5), animated: true)
// animated: with animation or not
croper.recover(animated: true)
let configure = croper.syncConfigure()
// 1.Sync crop
let image = croper.crop()
cropDone(image, configure)
// 2.Async crop: crop in DispatchQueue.global, result back to DispatchQueue.main
croper.asyncCrop {
guard let image = $0 else { return }
cropDone(image, configure)
}
// PS: You can set the compressionScale to compress the image
JPCrop is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'JPCrop'
Rogue24, [email protected]
JPCrop is available under the MIT license. See the LICENSE file for more info.