web-dev-qa-db-ja.com

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

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

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

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

このコードには何か問題がありますか? NSLogステートメントの制御中にアプリがクラッシュします。

ありがとうプラサド

86
Prasad

次を呼び出して、後の値を印刷できます。

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

これを試して

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

sizeOfTabNSString形式ではないため、クラッシュが発生します。

211
visakh7

JoeBlow前述この回答を入力してフォーマットした後に気づいた)、UIKit関数 NSStringFromCGSize() 、きれいに印刷する場合、およびその逆、 CGSizeFromString()CGSizeオブジェクトからNSString構造体を作成する場合。

Appleは、CGSizeFromString(string)stringパラメーターを文書化しています。次のとおりです。

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


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

出力

Pretty printed size: {320, 568}

その他の便利な機能( CGGeometry Reference

  • CGRectGetHeight()
  • CGRectGetWidth()
10
yurrriq

%@は、文字列を挿入しようとしていることを意味します。 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

6
Greg

CGSizeのメンバーの幅と高さはCGFloat型です。以下を使用して印刷できます

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

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

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
3
Disha