86 votes

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

J'ai essayé d'enregistrer (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 d'anormal dans ce code ? Mon application se bloque lorsque le contrôle arrive à l'instruction NSLog.

Merci Prasad

212voto

7KV7 Points 19750

Essayez ceci

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

Le crash se produit parce que sizeOfTab n'est pas dans NSString format.

55voto

Luke Points 7120

Vous pouvez appeler la fonction suivante pour imprimer la valeur recherchée :

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

11voto

yurrriq Points 81

Comme JoeBlow a mentionné ( J'ai remarqué après avoir tapé et mis en forme cette réponse ), il y a aussi la fonction UIKit, NSStringFromCGSize() pour une belle impression, et son inverse, CGSizeFromString() pour créer un CGSize struct d'un NSString objet.

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

Une chaîne de caractères dont le contenu est de la forme "{". w , h }", où w est la largeur et h est la hauteur. Le site w et h Les valeurs peuvent être des entiers ou des valeurs 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()

6voto

PartiallyFinite Points 3540

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

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

%f est utilisé parce que le largeur et hauteur Les propriétés sont du type float .

Pour d'autres conversions de format, voir la documentation : http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

3voto

Praveen S Points 7978

CGSize a les membres largeur et hauteur qui sont de type CGFloat . Vous pouvez les imprimer en utilisant les méthodes suivantes

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X