3

iOSアプリを開発している間 po [[UIWindow keyWindow] recursiveDescription]、デバッガーで使用すると非常に便利であることがわかりました。しかし、読みやすくするために出力を適切に表現するツールがあるかどうか疑問に思っていますか?

4

5 に答える 5

2

これが私が当時書き戻した方法です:

- (void)logView:(UIView*)v index:(int)i
{
    NSMutableString *str = [NSMutableString string];
    for (int u = 0; u<i; u++) { [str appendString:@"| "]; }
    [str appendFormat:@"<%@ %p frame:%@>", v.class, v, NSStringFromCGRect(v.frame)];
    // of course you can change it to display your accessibility hint/label
    printf("%s\n", [str UTF8String]);

    for (UIView *vv in v.subviews) { [self logView:vv index:i+1]; }
}

そのように呼んでください:[self logView:myView index:0];

サンプル出力:

<UITextField 0x6b30010 frame:{{20, 13}, {280, 31}}>
| <UITextFieldRoundedRectBackgroundView 0x6b31e00 frame:{{0, 0}, {280, 31}}>
| | <UIImageView 0x6b31fe0 frame:{{0, 0}, {0, 0}}>
| | <UIImageView 0x6b32070 frame:{{0, 0}, {0, 0}}>
| | <UIImageView 0x6b320e0 frame:{{0, 0}, {0, 0}}>
于 2012-07-27T12:49:38.937 に答える
1

私は通常poを使用しますが、しばらく前にこのツールを見つけて試してみるつもりでしたが、実際には使用していません。

アプリに埋め込まれ、小さなWebアプリとして公開されるため、アプリの使用中にビュー階層の状態を表示できます。

http://blog.thepete.net/blog/2011/05/01/inspect-state-of-our-running-ios-apps/

編集:

コメントで言及されたsparkinpectorを追加します。私はそれをチェックしました、そしてそれはとてもクールに見えます-特にあなたがプログラムでビューを作成するなら。

于 2012-07-27T12:32:24.307 に答える
0

確かにあります。私たちはここ数年で長い道のりを歩んできました-recursiveDescription。特にインターフェースが複雑な場合、ビューの階層を確認するのは非常に苦痛な方法です。いくつかの新しい解決策については、この回答をご覧ください。

iPhoneプログラムのビュー階層を検査する必要があります

于 2013-06-02T19:44:42.523 に答える
0

公開アプリを使用します:http://revealapp.com

これは役立つかもしれません。

于 2013-08-16T10:40:44.407 に答える
0

これが私的な方法の1つです。

次のコードを書く、

NSLog("%@",[[[UIApplication sharedApplication] keyWindow] performSelector(@selector(recursiveDescription))]);

どのビューでも同様に:

NSLog("%@",[view performSelector(@selector(recursiveDescription))]);

これにより、ビュー階層全体が得られます。

これはプライベートAPIであるため、アプリケーションでこのメソッドを使用した後は、コードをAppleに送信しないでください。ただ、これらはデバッグ目的でのみ使用してください。

于 2014-08-04T10:50:20.933 に答える