在 iOS 中使用 PEPhotoCropEditor 库的恒定裁剪纵横比
Posted
技术标签:
【中文标题】在 iOS 中使用 PEPhotoCropEditor 库的恒定裁剪纵横比【英文标题】:Constant crop aspect ratio using PEPhotoCropEditor library in iOS 【发布时间】:2015-04-01 11:53:20 【问题描述】:我在我的一个 ios 项目中使用 PEPhotoCropEditor 库。我可以使用以下代码获得恒定的纵横比 (1:1)。
- (void)openEditor
PECropViewController *controller = [[PECropViewController alloc] init];
controller.delegate = self;
controller.image = self.imageView.image;
UIImage *image = self.imageView.image;
CGFloat width = image.size.width;
CGFloat height = image.size.height;
CGFloat length = MIN(width, height);
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
controller.imageCropRect = CGRectMake((width - length) / 2,
(height - length) / 2,
length,
length);
// Restricted to a square aspect ratio
controller.keepingCropAspectRatio = YES;
controller.cropAspectRatio = 1.0;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentViewController:navigationController animated:YES completion:NULL];
但是我需要具有 (1:3) 的纵横比(高度:宽度)而不是 (1:1)。
controller.cropAspectRatio = 1.0f / 3.0f;
我在上面尝试过,但没有任何反应。仍然具有相同的纵横比。然后我也改变了下面的代码。
controller.imageCropRect = CGRectMake((width - length) / 2,
(height - length) / 2,
length * 3,
length);
再次没有发生任何事情。在上面评论之后,我硬编码了下面的值。
controller.imageCropRect = CGRectMake(0.0f, 0.0f, 300.0f, 100.0f);
然后裁剪区域显示正确,但是在调整 aria 大小时会导致破坏裁剪纵横比 (1:3)
知道如何在所有编辑过程完成之前保持纵横比 (1:3) 吗?
【问题讨论】:
你得到答案了吗?我有同样的问题。 【参考方案1】:在 PECropViewController.m 的 ViewdidAppear 中设置此项
self.cropAspectRatio = 1.0f;
self.keepingCropAspectRatio = YES;
并将值传递给 PECropRectView.m 中的函数 setKeepingAspectRatio
- (void)setKeepingAspectRatio:(BOOL)keepingAspectRatio
_keepingAspectRatio = keepingAspectRatio;
if (self.keepingAspectRatio)
CGFloat width = CGRectGetWidth(self.bounds);
CGFloat height = CGRectGetHeight(self.bounds);
self.fixedAspectRatio = your_fixed_aspect_ratio_value;//fminf(width / height, height / width);
你会得到预期的结果。
【讨论】:
以上是关于在 iOS 中使用 PEPhotoCropEditor 库的恒定裁剪纵横比的主要内容,如果未能解决你的问题,请参考以下文章
在 React Native 应用程序中使用 Branch.io 在 iOS 中延迟深度链接
在支持 iOS 13.0 的同时在 iOS 14.0 中使用 @StateObject
如何在 iOS 6 中使用 NSLayoutConstraint?
在 ios 中静音 MPMoviePlayerController 或在 ios 中使用带有静音选项的 AVPlayer 播放视频