Вывод структуры компонентов и рисование деревьев

Доброе время суток!

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

Если попробовать спросить у Google, то вы наверняка найдете массу подобных функций, и Вам не составит труда их изменить под себя, но они все ограничиваются выводом в консоль структуры (дерева) компонентов. Я же просто расширил изначальные возможности данной функции. В моей версии функции вы можете получить структуру в виде NSDictionary. Которую в последствии можно использовать в приложении как Вам будет угодно. Данная структура будет содержать информацию об основных параметрах компонентов (геометрию, видна или скрыта, трансформация и д.р.). Естественно эта информация будет актуальна на момент вызова функции, поэтому Вам следует думать если у Вас динамически меняется структура.

Сама функция выглядит очень просто:

Как Вы видите функция принимает два параметра:

  • view — Это вьюшка, о которой следует получить информацию. Функция будет рекурсивно искать все вьюшки, которые будут лежать внутри данной.
  • flag — Сохранять ли дополнительные параметры (frame, bounce, alpha, clipsToBounce, etc).

В результате Вы получите структуры в виде дерева, которую можно вывести в консоль или использовать для других целей. Например, для того чтобы вывести дерево. Вот теперь давайте поговорим о компоненте, который может оказывать деревья из структур. Я написал компонент, который может принимать структуру дерева и выводить ее в виде картинки. Вот как ее использовать:

Постоянная ссылка на это сообщение: https://www.dshav.com/ru/draw_views_and_trees/