我的应用程序之一的功能是自动裁剪图像。
基本思路是:某人拍摄一张纸张(比如:收据)的照片,然后在确定纸张边缘后自动裁剪图像。
我使用OpenCV来确定纸张的边缘。接下来,我会更改每个指南线的"中心"属性(只有2条水平和2条垂直的“线”,可以手动拖动)。
接着,在我完成所有更改4个指南线的调用之后不久,其他东西就会把它们的"中心"再次设置回去。(我已经重写了"setCenter"以证明这一点)。它似乎是被这个方法重新设置的:[UIView(Geometry) _applyISEngineLayoutValues]。
我无法弄清楚为什么会发生这种情况,或者如何停止它,但它可能与约束有关。我的视图是一个简单的UIButton。当用户用手指轻点并拖动时,会调用一个动作例程来改变其中心。这很有效。
但在另一种情况下,我正在使用UIImagePickerController。在他们选择图片后,我确定纸张边界,更改了"guides"中心,然后稍后"_applyISEngineLayoutValues"将它们全部设置回来。
对于这种情况,您有什么想法吗?或者我如何设置视图的中心,让它实际上停留在那里呢?
基本思路是:某人拍摄一张纸张(比如:收据)的照片,然后在确定纸张边缘后自动裁剪图像。
我使用OpenCV来确定纸张的边缘。接下来,我会更改每个指南线的"中心"属性(只有2条水平和2条垂直的“线”,可以手动拖动)。
接着,在我完成所有更改4个指南线的调用之后不久,其他东西就会把它们的"中心"再次设置回去。(我已经重写了"setCenter"以证明这一点)。它似乎是被这个方法重新设置的:[UIView(Geometry) _applyISEngineLayoutValues]。
我无法弄清楚为什么会发生这种情况,或者如何停止它,但它可能与约束有关。我的视图是一个简单的UIButton。当用户用手指轻点并拖动时,会调用一个动作例程来改变其中心。这很有效。
但在另一种情况下,我正在使用UIImagePickerController。在他们选择图片后,我确定纸张边界,更改了"guides"中心,然后稍后"_applyISEngineLayoutValues"将它们全部设置回来。
对于这种情况,您有什么想法吗?或者我如何设置视图的中心,让它实际上停留在那里呢?
somView.center = somePoint;
改变CGPoint吗?如果是这样,那么你不能使用AutoLayout实现。AutoLayout的第一个规则是你不能改变视图的frame
(读作center
)。如果你希望frame
改变,那么必须更新任何相关约束的constant
值,以便将视图移动到所需位置。 - Fogmeister