環境 | iOS(iPhone) SDK 4.0 |
UIViewのframeの状態をコンソールに出力するのが結構面倒でしたので、 以下のようなクラスを作って対応することにしました。
以下がヘッダファイルです。
//NSString+Geometry.h #import <Foundation/Foundation.h> @interface NSString (Geometry) + stringWithPoint:(CGPoint)point; + stringWithSize:(CGSize)size; + stringWithRect:(CGRect)rect; + stringWithAffineTransform:(CGAffineTransform)affineTransform; @end
以下がソースファイルです。
// NSString+Geometry.m #import "NSString+Geometry.h" @implementation NSString (Geometry) + stringWithPoint:(CGPoint)point { return [NSString stringWithFormat:@"%f,%f", point.x, point.y]; } + stringWithSize:(CGSize)size { return [NSString stringWithFormat:@"%fx%f", size.width, size.height]; } + stringWithRect:(CGRect)rect { return [NSString stringWithFormat:@"%g,%g:%gx%g", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height]; } + stringWithAffineTransform:(CGAffineTransform)affineTransform { return [NSString stringWithFormat:@"[%g %g 0][%g %g 0][%g %g 1]", affineTransform.a, affineTransform.b, affineTransform.c, affineTransform.d, affineTransform.tx, affineTransform.ty]; } @end
これでUIViewのframeは以下のようなコードで出力できます。
UIView *view = ... NSLog(@"view = %@", [NSString stringWithRect:view.frame]);
もっと簡単な方法はないのですかね・・・。
(2010/12/31追記)
SDKの以下の関数を使うことにより同じことが実現できることが分かりました。
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
あるものを使った方が良いので上記のNSString+Geometryは使わないことにしました。
(2011/06/13追記)
関数名が一部間違えていたので修正しました。