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, zhoujianping24@hotmail.com
JPCrop is available under the MIT license. See the LICENSE file for more info.