programing

iOS에서 뷰 계층을 검사하려면 어떻게 해야 합니까?

topblog 2023. 6. 12. 21:03
반응형

iOS에서 뷰 계층을 검사하려면 어떻게 해야 합니까?

iOS 앱의 뷰 계층을 검사하는 GUI 도구가 있습니까?웹킷의 웹 인스펙터나 비슷한 도구를 생각하고 있습니다.보기의 위치나 크기가 잘못되었거나 자식이 부모에 제대로 포함되지 않은 경우와 같은 레이아웃 문제를 디버그하려고 합니다.현재 저는 이러한 다양한 조건을 손으로 테스트하거나 다른 관점에서 다른 배경색을 설정하는 주장을 추가해야 합니다. 여러분이 상상할 수 있듯이, 그것은 정말 지루한 방법입니다.

인스의츠를 .UI recorder그러나 이는 UI 작업만 기록하고 재생하며 어떤 경우에도 Mac 앱에서만 작동합니다.

더 좋은 해결책이 있습니까?

뷰 도구가 방법을 한 적이 : GUI 뷰 검 있 모 는 지 겠 르 UI 다 있 사 습 니 적 이 한 용 을 법 방 깅 에 버 디 만 서 뷰 사 도-recursiveDescription

디버거에서 프로그램을 일시 중지하고 GDB에 입력하면 (편집: LLDB에서도 작동)

po [UIWindow] 키Windows 재귀적 설명]

전체 보기 계층에서 인쇄할 수 있습니다.특정 뷰에서 이를 호출하여 해당 뷰의 뷰 계층에서 인쇄할 수도 있습니다.

거기서 얻은 정보를 훑어보는 것은 조금 지루할 수 있지만, 그것은 저에게 유용한 것으로 판명되었습니다.

크레딧은 이 방법에 대해 이야기하고와 연결된 블로그 게시물에 연결되어 있지만 Apple 기술 노트를 찾기가 다소 어렵습니다.

Xcode 6에는 이제 Display App 및 Spark Inspector와 같은 3D 뷰 계층 검사 기능이 내장되어 있습니다.

여기에 이미지 설명 입력

앱이 실행되는 동안 "Debug View Hierarchy" 버튼을 클릭하여 실행을 일시 중지하고 현재 보기를 검사합니다.

여기에 이미지 설명 입력

자세한 내용은 Apple 설명서를 참조하십시오.

앱 스크린샷 표시

이상하게도, 현재 이 게시물을 기준으로 오픈(무료) 베타 버전인 http://revealapp.com/, 이라는 다른 옵션이 있습니다.보시다시피 또 다른 시각 검사관입니다.

EDIT 2014-04-05: 공개는 베타 버전에서 벗어나 더 이상 무료가 아닙니다.하지만 30일간의 재판이 있습니다.

이 질문은 오래되었지만 제가 개발하는 새로운 도구에 대한 정보를 여기에 추가하겠습니다. https://github.com/glock45/iOS-Hierarchy-Viewer 여기에 이미지 설명 입력

여기에 이미지 설명 입력

이 스레드를 최신 상태로 유지하기 위해 최근 Spark Inspector를 사용하고 있습니다.무료는 아니지만 아주 좋습니다.

FLEX Debugger는 실행 중인 앱에서 UI를 수정할 수 있는 앱 뷰 검사기를 제공합니다.또한 네트워크 요청을 기록합니다.

https://github.com/Flipboard/FLEX

여기에 이미지 설명 입력

무료 : 검사자에 입력하기만 하면 됩니다.

po [[UIWindow keyWindow] recursiveDescription]

광고 : http://revealapp.com/ 공개 앱 베타 버전을 테스트해봤는데 버그가 있지만 좋았습니다.또 다른 상용 도구인 http://sparkinspector.com/ 은 원활하게 작동합니다.

스위프트 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()

디버그 창에서 모두 덤프합니다.(읽을 수 없음) :( iOS 10, Xcode 8.3.3에서 작업)

po UIApplication.shared.keyWindow?.recursiveDescription()

swift/Xcode 10의 경우 디버그 콘솔에 다음을 입력합니다.

po yourView.value(forKey: "recursiveDescription")!

지정된 항목에 대한 재귀 계층 구조가 인쇄됩니다.UIView.

(신용:recursiveDescription을 사용하여 보기 계층을 디버그하는 방법)

승인된 답변은 Xcode 8과 Swift 2.3을 사용하는 저에게는 더 이상 작동하지 않습니다.다음과 같은 이점이 있습니다.

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

언급URL : https://stackoverflow.com/questions/5150186/how-do-i-inspect-the-view-hierarchy-in-ios

반응형