私はこのようなCGSizeオブジェクトの値を記録(印刷)しようとしました:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
このコードには何か問題がありますか? NSLogステートメントの制御中にアプリがクラッシュします。
ありがとうプラサド
次を呼び出して、後の値を印刷できます。
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
これを試して
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
sizeOfTab
がNSString
形式ではないため、クラッシュが発生します。
JoeBlow前述 (この回答を入力してフォーマットした後に気づいた)、UIKit関数 NSStringFromCGSize()
、きれいに印刷する場合、およびその逆、 CGSizeFromString()
、CGSize
オブジェクトからNSString
構造体を作成する場合。
Appleは、CGSizeFromString(
string
)
のstring
パラメーターを文書化しています。次のとおりです。
内容が「{w、h}」の形式の文字列。ここで、wは幅、hは高さです。 wおよびhの値は、整数値または浮動小数点値にすることができます。有効な文字列の例は@ "{3.0,2.5}"です。文字列はローカライズされていないため、アイテムは常にカンマで区切られます。
CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
Pretty printed size: {320, 568}
%@は、文字列を挿入しようとしていることを意味します。 CGSizeは文字列ではなく、自動的に1つに変換することはできません。それがあなたのアプリがクラッシュする理由です。代わりに、次のように個々のプロパティを個別に記録する必要があります
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
widthおよびheightプロパティはタイプであるため、%fが使用されますfloat。
他の形式の変換については、ドキュメントを参照してください: http://developer.Apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html
CGSize
のメンバーの幅と高さはCGFloat
型です。以下を使用して印刷できます
NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
ここで、self.viewはUIViewクラスのビューです。このログで任意のフレームを印刷できます。
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));