我的應用程序的一個功能是自動裁剪圖像的功能。自動佈局阻止我改變視圖的中心
其基本思想是有人會拍一張紙(想想:收據),然後在確定紙張的邊界後,圖像可以自動裁剪。
我可以通過使用OpenCV來確定紙張的邊框。所以,接下來我要做的是改變每個指南的「中心」屬性(只有2條水平線和2條垂直「線」可以手動拖動)。
然後,在我撥打我的所有電話來改變每個4個指南後不久,其他事情就會出現,並再次設置「中心」。 (我已經重寫了「setCenter」來證明這一點)。該中心似乎被重置爲:[UIView(幾何)_applyISEngineLayoutValues]。
我不明白爲什麼會發生這種情況,或者如何阻止它,但它可能與約束有關。我的觀點是一個簡單的UIButton。當用戶用手指敲擊&時,會調用一個動作例程來改變中心。這工作。
但在另一種情況下,我提出了一個UIImagePickerController。在他們選擇圖片後,我確定紙張邊界,更改「指南」中心,然後在「_applyISEngineLayoutValues」後面設置它們。
任何想法在這種情況下發生了什麼?或者我可以如何設置視圖的中心,並讓它實際上留下來?
我看到一個類似的東西;我將視圖的框架設置爲非零大小的框架,但是_applyISEngineLayoutValues將邊界設置爲零。 – Simon 2013-07-16 11:36:20
你能展示一些代碼嗎?你是否試圖用......'someView.center = somePoint;'來改變CGPoint?如果是這樣,你不能用AutoLayout來做到這一點。 AutoLayout的第一條規則是你不能改變視圖的'frame'(讀'中心')。如果你想讓'frame'改變,那麼你必須更新任何相關約束的'constant'值,以便視圖移動到你想要的位置。 – Fogmeister 2013-07-17 08:00:44