gpt4 book ai didi

iphone - 如何动态调整 scrollViewDidZoom 中的 contentInset?我最初在 UIScrollview 中设置了 UIImageView 的 contentInset

转载 作者:可可西里 更新时间:2023-11-01 03:57:19 29 4
gpt4 key购买 nike

我正在进行一个项目,该项目为 UIImagePickerController 制作自定义 'Move and Scale' Controller。 (如果 imagePickerController.allowsEditing=YES 出现时 Controller )

我想在裁剪矩形中裁剪一个 UIImage,如下图所示。

screenshot 1

然后我编写了一些代码来设置 contentInset

    self.selectedImageView.backgroundColor = [UIColor redColor];

CGRect cropRect = [SKPhotoCropFrameView getCropRectFromOrientation:self.photoCropOrientation];
CGRect aspectFitRect = AVMakeRectWithAspectRatioInsideRect(self.selectedImageView.image.size, self.selectedImageView.frame);
CGFloat difference = fabsf(cropRect.size.height - aspectFitRect.size.height);
self.contentInset = UIEdgeInsetsMake(difference/2, 0, difference/2 + 20, 0); // 20 is status bar height

这是结果。

screenshot 2

黑色区域为contentInset区域。

但是,如果我捏这个 scrollView 来放大,就会发生一些事情。

screenshot 3

我想我必须做点什么

    - (void)scrollViewDidZoom:(UIScrollView *)scrollView

动态调整contentInset。我怎样才能做到这一点?请给我一些帮助:)

最佳答案

我希望有人回答这个问题,我很难过,因为没有。

但感谢上帝,我解决了这个问题。

    - (void)scrollViewDidZoom:(UIScrollView *)scrollView

使用 zoomScale 动态调整 contentInset。我只是实现了 Lanscape mode 进行测试,但是 Portrait mode 是完全相同的方式。

// adjust contentInset
CGFloat increasingZoomScale = (scrollView.zoomScale == 1) ? 0 : (-1 * (1 - scrollView.zoomScale));

CGRect cropRect = [SKPhotoCropFrameView getCropRectFromOrientation:self.photoCropOrientation];
CGRect aspectFitRect = AVMakeRectWithAspectRatioInsideRect(self.selectedImageView.image.size, self.selectedImageView.frame);
CGFloat difference = fabsf(cropRect.size.height - aspectFitRect.size.height);

// implement at `Landscape` mode first
if (self.photoCropOrientation == SKPhotoCropOrientationPortrait) {

}else{
// get scaledFrameHeight because it's `Landscape` crop mode
CGFloat increasingFrameHeight = scrollView.frame.size.height * increasingZoomScale;
self.contentInset = UIEdgeInsetsMake(difference/2 - increasingFrameHeight/2, 0, difference/2 - increasingFrameHeight/2, 0);
}

砰的一声。这是屏幕截图。

screenshot 4

关于iphone - 如何动态调整 scrollViewDidZoom 中的 contentInset?我最初在 UIScrollview 中设置了 UIImageView 的 contentInset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com