2013-12-09 3 views
1

В механическом программном обеспечении САПР, которое использует концепции, сходные с ограничениями автоопределения, часто можно добавить «производное ограничение». Это не влияет на макет, но позволит вам непосредственно прочитать значение важного измерения.Можете ли вы добавить производное ограничение с помощью автоматического макета?

Например, рассмотрим следующий макет для зрения с двумя подвидов:

 32  64 
    |------| |------| 

|-[imgOne]-[imgTwo]-| 

|-------------------| 
      w 

Ширина зрения является суммой расстояния от края по умолчанию слева и справа, расстояния по умолчанию между представлениями изображений , и два ограничения ширины (32 и 64), применяемые к изображениям.

Я бы хотел знать w во время выполнения.

Теоретически это должно быть view.bounds. Тем не менее, не всегда безопасно читать это свойство (поскольку представление, возможно, еще не обновило его ограничения макета).

Можно ли добавить ограничение, которое не влияет на размер представления, но будет ли изменено его свойство .constant после завершения компоновки?

(я попытался добавить ограничение ширины к представлению с приоритетом 1, но .constant всегда читает номинальную стоимость, вместо фактического значения.)

ответ

0

Добавление «производный» ограничение поставит вас в ту же самую дыру, в которой вы начали, - ожидая автоматического макета, чтобы закончить выкладывание ваших просмотров. Это все о сроках. При использовании автоматической компоновки хорошим местом для чтения конечных геометрий ваших представлений является метод viewDidLayoutSubviews контроллера. Другими словами, прочитайте границы представления в viewDidLayoutSubviews.

+0

Даже если он помещает вас в ту же дыру - и это определенно может, в зависимости от того, как оно реализовано - я все еще надеюсь на способ избежать прямого доступа к границам, поскольку это кажется шагом назад, когда * все остальное * в терминах ограничений. – sapi

Смежные вопросы