2

ビューのフレームをログに記録するだけでなく、特定のビュー入力の名前もログに記録する簡単なメソッドを作成したいと思います。メソッドの引数として文字列を入力する以外に、呼び出されたビューと同等の文字列を取得する簡単な方法はありますか?

-(void)printViewFrame:(UIView*)view { 

    NSLog(@"%@'s frame is: origin x: %f, origin y: %f, size x: %f, size y: %f", view ,view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);

}

[self printViewFrame:myView];

注:今のところ、私はこれを行っていますが、これは少し醜いです:

-(void)printViewFrame:(UIView*)view name:(NSString*)name {

    NSLog(@"%@'s frame: %@",name, NSStringFromCGRect(view.frame));

}
4

4 に答える 4

4

ビューのフレームを取得するには、次を使用できますNSStringFromCGRect

NSLog(@"%@",NSStringFromCGRect(view.frame));

ただし、ビューの名前を取得する場合は、NSStringとしてパススルーする必要があります。ポインタのメモリアドレスのみを読み取ることができ、実際の名前は読み取ることができません。これに最も近いのは

NSLog(@"%@",NSStringFromClass([view class]));

出力されます

UIView

于 2013-01-08T12:02:03.223 に答える
1

メソッド呼び出し

[self printViewFrame:myView];

メソッドの実装

-(void)printViewFrame:(UIView*)view { 

    NSLog(@"%@ : %@", NSStringFromCGRect(view.frame),NSStringFromClass(view.class));

}
于 2013-01-08T12:07:46.473 に答える
0

-(void)printViewFrame:必要なものを実装する唯一の可能な方法は、メソッドを呼び出す前に変数の名前をログに記録することだと思います

于 2013-01-08T12:13:41.323 に答える
0

標準関数でこれを行う方法はわかりませんが、マクロでこれを行うことができます。

#define PRINT_NAME(var) NSLog(@"%s", #var)

次に、それを呼び出すだけで、変数の名前が出力されます。

PRINT_NAME(view);

NSStringこれを使用して、必要な名前を取得することもできます。

#define GET_NAME_STRING(var) [NSString stringWithFormat:@"%s", #var]

このように使用するには:

NSLog(@"frame stuff %f,...., NAME IS %@", frame.x, ..., GET_NAME_STRING(view));

1つのメソッド(またはいくつか)のみが必要な場合は、いくつかの定義を実行して、必要なことを実行できます。

#define CALL_PRINT(var) NSLog(@"%s", #var); [self printViewFrame:var]

だから、あなたが電話するとき

CALL_PRINT(myView);

ビュー名を出力してから関数を呼び出しprintViewFrameます。

また、マクロで何もしたくない場合は、そこに何かが見つかりました:タッチされたUIViewの名前

于 2013-01-08T12:17:44.177 に答える