iOS 圖片裁剪,旋轉(zhuǎn)角度,微調(diào)角度 LEGOImageCropper

實(shí)現(xiàn)與效果

  • 微調(diào)角度
  • 90°角旋轉(zhuǎn)
  • 改變寬高比例
  • 旋轉(zhuǎn)和微調(diào)過程中適應(yīng)邊框填充邊界
  • 源碼

微調(diào)角度

微調(diào)角度操作

- (void)beginTrackingWithTouch {

    // 開始微調(diào)角度

}

- (void)continueTrackingWithTouch:(CGFloat)value changeValue:(CGFloat)changeValue {

    // 調(diào)整中

    [self.imageCropperView setRotationAngle:changeValue];

}

- (void)endTrackingWithTouch {

    // 微調(diào)角度結(jié)束

}

90°角旋轉(zhuǎn)

90°角旋轉(zhuǎn)操作

- (void)rotate:(id)sender {

    [self.imageCropperView rotation:YES];

}

改變寬高比例

改變寬高比例操作

- (void)resizeWHScale:(id)sender {

[UIView animateWithDuration:0.15 animations:^{

 self.imageCropperView.frame = [self imageCropViewFrame:self.currType];

[self.imageCropperView setResizeWHRatio:self.currScale animated:NO];

}completion:nil];

其他可設(shè)置屬性


/** 裁剪框顏色 / Mask layer color */

**@property (nonatomic, strong) UIColor *maskColor;

/** 裁剪框陰影 / Mask frame color */

**@property (nonatomic, strong) UIColor *shadowColor;

/** 網(wǎng)格線顏色 / Gridlines color */

**@property (nonatomic, strong) UIColor *shapeLayerColor;

/** 是否允許雙指自由旋轉(zhuǎn)  / Allow two fingers to rotate freely ,default value is YES */

**@property (nonatomic, assign, getter=isRotationEnabled) BOOL rotationEnabled;

/** 是否允許雙擊重置 / Allow double click Reset , default value is YES */

**@property (nonatomic, assign, getter=isDoubleResetEnabled) BOOL doubleResetEnabled;

/** 是否為順勢(shì)轉(zhuǎn)旋轉(zhuǎn) / Is it clockwise rotation , default value is NO */

**@property (nonatomic, assign, getter=isClockwiseRotation) BOOL clockwiseRotation;

/** 重置 / reset */

- (void)reset:(BOOL)animated;

/** 設(shè)置【裁剪比例】 / Setup the cut scale */

**@property (nonatomic, assign) CGSize resizeWHRatio;

- (void)setResizeWHRatio:(CGSize)resizeWHRatio;

- (void)setResizeWHRatio:(CGSize)resizeWHRatio animated:(BOOL)animated;

/** 設(shè)置【旋轉(zhuǎn)角度】/ Setup the rotation angle */

@property (nonatomic, assign) CGFloat rotationAngle;

- (void)rotation:(BOOL)animated;

- (void)setRotationAngle:(CGFloat)rotationAngle;

- (void)setRotationAngle:(CGFloat)rotationAngle animated:(BOOL)animated;

關(guān)于旋轉(zhuǎn)和微調(diào)過程中適應(yīng)邊框填充邊界的計(jì)算方式

旋轉(zhuǎn)過程中,為防止漏出黑色背景區(qū)域,需要在調(diào)整過程中對(duì) scrollview 進(jìn)行縮放,以滿足圖片充滿裁剪區(qū)域,計(jì)算方式如下:

地鐵上寫的計(jì)算方法,粗糙

即:
scrollview.width = CGRectGetWidth(maskRect) * cos(a) + CGRectGetHeight(maskRect) * sin(a);
scrollview.height = CGRectGetHeight(maskRect) * cos(a) + CGRectGetWidth(maskRect) * sin(a);

源碼

有興趣的可以下載看下,希望大佬多多點(diǎn)星。

https://github.com/legokit/LEGOImageCropper

GitHub - legokit/LEGOImageCropper: imageCropper, crop image, Picture cropper, support to resizeWHScale, set size, rotate angle, fine adjust angle, image crop. 圖片裁剪,支持大小縮放,設(shè)置大小,旋轉(zhuǎn)角度,微調(diào)角度,裁剪產(chǎn)品圖片。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容