Как проверить иерархию представлений в iOS?

Есть ли инструмент GUI, который проверяет иерархию представлений приложения iOS? Я думаю о веб-инспекторе Webkit или подобных инструментах. Я ищу проблемы отладки макета, такие как представления, имеющие неправильную позицию или размер, или дочерний элемент, который не содержится должным образом в его родительском элементе. В настоящее время я должен добавить утверждения, которые проверяют эти различные условия вручную или задают разные цвета фона на разных представлениях, и, как вы можете себе представить, это действительно утомительный способ сделать это.

Я смотрел Инструменты UI recorder, но это только записывает и воспроизводит действия пользовательского интерфейса` и, в любом случае, работает только для приложений Mac.

Есть ли лучшее решение?

Ответ 1

В Xcode 6 теперь есть встроенная проверка иерархии 3D-вида, такая как Reveal App и Spark Inspector.

enter image description here

Нажмите кнопку "Отладить иерархию представлений" во время работы приложения, чтобы приостановить выполнение и проверить представления в текущий момент.

enter image description here

Больше информации в документации Apple.

Ответ 2

Я не знаю, есть ли инструмент проверки просмотра GUI, но мне повезло с методом отладки в UIView: -recursiveDescription

если вы приостановите программу в отладчике и введите ее в GDB (Edit: также работает в LLDB)

po [[UIWindow keyWindow] recursiveDescription]

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

Может быть немного утомительно пробираться через информацию, которую вы выходите из нее, но мне это оказалось полезным.

Кредит переходит на этот пост в блоге, в котором говорится об этом методе, а также связан с это полезно, но довольно сложно найти Apple tech note.

Ответ 3

Reveal app screenshot

Как ни странно, теперь есть еще один вариант, http://revealapp.com/, который по состоянию на этот пост находится в открытой (бесплатной) бета-версии. Как вы можете видеть это еще один визуальный инспектор.

EDIT 2014-04-05: Reveal выходит из бета-версии и больше не освобождается. Однако есть 30-дневная пробная версия.

Ответ 4

Этот вопрос старый, но позвольте мне добавить информацию о новом инструменте, который я разрабатываю: https://github.com/glock45/iOS-Hierarchy-Viewer enter image description here

Ответ 5

enter image description here

Чтобы обновить этот поток, я недавно играл с Spark Inspector. Это не бесплатно, но это очень приятно.

Ответ 6

Бесплатно: просто введите это в инспекторе:

po [[UIWindow keyWindow] recursiveDescription]

Коммерческий: http://revealapp.com/ Я тестировал бета-версию openapp, это было хорошо, хотя и имело ошибки. Еще один коммерческий инструмент: http://sparkinspector.com/ работает бесшовно.

Ответ 7

Отладчик FLEX предоставляет встроенный инспектор представления, который позволяет изменять пользовательский интерфейс в работающем приложении. Он также регистрирует сетевые запросы.

https://github.com/Flipboard/FLEX

enter image description here

Ответ 8

Swift 4.

IOS

extension UIView {

   // Prints results of internal Apple API method `recursiveDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("recursiveDescription"))))
   }
}

MacOS

extension NSView {

   // Prints results of internal Apple API method `_subtreeDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("_subtreeDescription"))))
   }
}

Использование (в отладчике): po myView.dump()

Ответ 9

Это отбрасывает все в окне отладки. (Трудно прочитать tho):( Работа с iOS 10, Xcode 8.3.3

po UIApplication.shared.keyWindow?.recursiveDescription()

Ответ 10

Утвержденный ответ больше не работает для меня, используя Xcode 8 и Swift 2.3. Вот что для меня работает:

po UIApplication.sharedApplication().keyWindow?.recursiveDescription()