web-dev-qa-db-fra.com

Comment imprimer ou enregistrer la valeur de l'objet CGSize?

J'essayais de consigner (imprimer) la valeur de l'objet CGSize comme ceci:

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

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

Y a-t-il quelque chose de mal dans ce code; mon application se bloque alors que le contrôle revient à la déclaration NSLog.

Merci Prasad

86
Prasad

Vous pouvez appeler ce qui suit pour imprimer la valeur que vous recherchez:

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

Essaye ça

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

Le plantage se produit car sizeOfTab n'est pas au format NSString.

211
visakh7

Comme JoeBlow l'a mentionné ( J'ai remarqué après avoir tapé et formaté cette réponse ), il y a aussi la fonction UIKit, NSStringFromCGSize() , pour une jolie impression, et son inverse, CGSizeFromString() , pour créer une structure CGSize à partir d'une NSString objet.

Apple documente le paramètre string de CGSizeFromString(string) comme suit:

Une chaîne dont le contenu est de la forme "{ w , h } ", où w est la largeur et h est la hauteur. Les valeurs w et h peuvent être des valeurs entières ou flottantes. Un exemple de chaîne valide est @ "{3.0,2.5}". La chaîne n'est pas localisée, les éléments sont donc toujours séparés par une virgule.


Exemple

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

Sortie

Pretty printed size: {320, 568}

Autres fonctions utiles ( Référence CGGeometry )

  • CGRectGetHeight ()
  • CGRectGetWidth ()
10
yurrriq

% @ signifie que vous essayez d'insérer une chaîne. CGSize n'est pas une chaîne et ne peut pas être converti automatiquement en une seule. C'est pourquoi votre application se bloque. Au lieu de cela, vous devez enregistrer les propriétés individuelles séparément, comme

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

% f est utilisé car les propriétés largeur et hauteur sont du type float .

Pour d'autres conversions de format, consultez les documents: http://developer.Apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

6
Greg

CGSize a la largeur et la hauteur des membres qui sont de type CGFloat. Vous pouvez les imprimer en utilisant ce qui suit

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

Ici self.view est la vue de la classe UIView. Vous pouvez imprimer n'importe quel cadre avec ce journal.

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