我正在尝试实施用户使用的照片裁剪工具并且卡住了。我有一个UIView
(imageCropper
)位于UIImageView
(imageToBeEdited
)的顶部(z顺序),其中包含正在裁剪的图像。如果我此时运行应用程序,使用其他配置和逻辑,imageCropper
就在图像的顶部。但是,当我将maskView
的{{1}}设置为imageToBeEdited
时,imageCropper
的来源会发生变化。在弄乱了约束常数之后,我确定它正在通过前导约束的精确值移动到更大的x,并且通过顶部约束的精确值移动更大的y。
另一条让这更令人困惑的信息是,我在imageCropper
的{{1}}顶部(再次按z顺序)有另一个UIView
(imageCropperBorder
)作为一个可见的边界。我将它的帧设置为与imageCropper
完全相同的帧,但它们应该是它们所在的位置。
我没有在imageCropper
或imageCropper
设置约束。
我的问题为什么imageCropperBorder
会发生变化?如何解决此问题?
尝试了几种不同的方法来创建一个用户启用的,平滑移动的裁剪工具后,我回到了这个解决方案,并通过编程方式抓住约束来创建x和y偏移。 imageCropper
中的值,然后在viewDidLoad
中调整imageCropper
的来源并确保其有效。
但是,我在viewDidLayoutSubviews
的视图中设置了panGestureRecognizer
。在我开始拖动照片(ViewController
)进行裁剪后,imageCropper
原点再次向下移动。我尝试将偏移逻辑添加到处理识别器的函数中,但它似乎正在复合更改并将帧从屏幕上发送出去。 (我每次收到识别器时都会重置翻译。)
代码:
imageCropper
与往常一样,任何帮助都将不胜感激。
答案 0 :(得分:2)
将imageCropper
设置为imageView
的maskView时。它将使用imageView
的坐标系来定位imageCropper
,因此对于imageCropper
,点(0,0)不在ViewController
&# 39;视图的左上角,但imageView
的左上角。