Одна из особенностей моего приложения - это то, что делает автоматическую обрезку изображения.Авто макет мешает мне изменить центр представления
Основная идея заключается в том, что кто-то сфотографировал листок бумаги (думаю: квитанция), а затем изображение может автоматически обрезаться после определения границ бумаги.
Я могу определить границу бумаги с помощью OpenCV. Итак, следующее, что я делаю, - это изменить свойство «center» каждого из моих направляющих (всего две горизонтальные и две вертикальные «линии», которые можно перетащить вручную).
Затем, вскоре после того, как я сделаю все мои звонки, чтобы изменить каждый из 4-х руководств, что-то еще приходит и снова устанавливает «центр». (Я подтвердил это «setCenter», чтобы это доказать). Центр, похоже, сбрасывается следующим образом: [UIView (Geometry) _applyISEngineLayoutValues].
Я не могу понять, почему это происходит, или как остановить его, но это, вероятно, связано с ограничениями. Мой взгляд - это простой UIButton. Когда пользователь отбирает &, он нажимает на него пальцем, вызывается вызывающая программа, которая просто меняет центр. Это работает.
Но в другом случае я воспитываю UIImagePickerController. После того, как они выбирают картинку, я определяю границы бумаги, меняю «направляющие» центры, а потом «_applyISEngineLayoutValues» возвращает их обратно.
Любая идея, что происходит в этом случае? Или как я могу установить центр представления, и на самом деле он остался?
Я вижу подобное; Я устанавливаю кадр представления на один с ненулевым размером, но тогда _applyISEngineLayoutValues устанавливает границы равными нулю. – Simon
Можете ли вы показать код. Вы пытаетесь изменить CGPoint с помощью ... 'someView.center = somePoint;'? Если это так, вы не можете сделать это с помощью AutoLayout. Первое правило AutoLayout состоит в том, что вы не можете изменить 'frame' (read' center') представления. Если вы хотите изменить «фрейм», вы должны обновить значения «константы» любых связанных ограничений, чтобы представление было перемещено туда, где вы хотите. – Fogmeister