CGSizeオブジェクトの値を印刷または記録する方法は?


88

私は次のようにCGSizeオブジェクトの値を記録(印刷)しようとしました:

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);

NSLog(@"size of tab is %@",sizeOfTab);

このコードに問題はありませんか?NSLogステートメントに制御が渡っている間にアプリがクラッシュします。

おかげでプラサド


2
NSStringFromCGSize()およびNSStringFromCGRect()
Fattie

回答:


55

次を呼び出して、現在の値を出力できます。

NSLog(@"width = %f, height = %f", mySize.width, mySize.height);

217

これを試して

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));

sizeOfTabNSStringフォーマットされていないため、クラッシュが発生します。


3
これは私が今日学んだ新しいものです。+1、しかし私は私の答えを削除しません:-P。
Praveen S

@Praveen:ありがとう..今日は何か新しいことを学ぶのを手伝ってくれてうれしい...好意を返すだけです。私は、SOを通じてそのような情報の受信側であり続けています。
visakh7

1
@ 7KV7クラッシュは、sizeOfTabがオブジェクトではないために発生します(単なるオブジェクトではなく、すべてのオブジェクトが機能しますNSString)。CGSize構造体です。
albertamg

正常に動作していることに感謝しますが、{nan、49}と表示されています。nanとは何ですか?
Prasad

@Prasad:ナンはNot a Numberの略だと思います。tabCountとは何ですか?ログを試すself.frame.size.width/tabCount
visakh7

11

以下のようJoeBlowが言及した私は入力して、この答えをフォーマットした後に気づいた)、また、UIKitの機能があります、NSStringFromCGSize()かなり印刷、およびその逆のため、CGSizeFromString()作成するためCGSizeの構造体をNSStringオブジェクト。

Apple は次のようにstringパラメータを文書化しています。CGSizeFromString(string)

内容が "{ wh }" という形式の文字列。wは幅、hは高さです。WHの値は、整数または浮動小数点値であることができます。有効な文字列の例は@ "{3.0,2.5}"です。文字列はローカライズされていないため、項目は常にコンマで区切られます。


CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));

出力

Pretty printed size: {320, 568}

その他の便利な関数(CGGeometryリファレンス

  • CGRectGetHeight()
  • CGRectGetWidth()

6

%@は、文字列を挿入しようとしていることを意味します。CGSizeは文字列ではなく、自動的に文字列に変換することはできません。そのため、アプリがクラッシュします。代わりに、個々のプロパティを個別にログに記録する必要があります。

NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);

%fが使用されるのは、高さのプロパティがfloat型であるためです。

他のフォーマット変換については、ドキュメントを参照してください:http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html


SOへようこそ。詳細な回答については+1。
Praveen S、2011

ありがとう。私は周りを見回しましたが、質問する前にドキュメントを気にしない人がどれだけいるのかを見るのは驚くべきことです。ここにリンクを配置して、intの出力方法を尋ねる別の質問を受けないようにします。
グレッグ、

3

CGSizeタイプのメンバーの幅と高さがありCGFloatます。以下を使用してそれらを印刷できます

NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);

3

ここで、self.viewはUIViewクラスのビューです。このログで任意のフレームを印刷できます。

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.