2010年12月15日

NSString+Geometry

環境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追記)
関数名が一部間違えていたので修正しました。

投稿者 MASATO : 2010年12月15日 01:25 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?