Est-il une constante pour le maximum CGFloat valeur?
J'ai besoin de créer un CGSize pour calculer la hauteur du texte de l'arbitraire d'un texte avec une longueur arbitraire. UIKit a cette belle méthode -sizeWithFont:constrainedToSize: et mon texte est seulement limité en largeur mais pas en hauteur.
Pour cela, j'ai besoin de mettre le maximum possible CGFloat pour la hauteur.
Est là une constante comme "CGFloatMax"?
- upvoted tout le monde..en considérant qu'ils sont dans les 4 secondes de chaque d'autres hah.
- Il serait sans doute vous prendre moins de temps pour la vérification de la documentation pour une question comme celle-ci que de la poster ici.
- Caswell: je pense que beaucoup de gens ne savent pas (au moins une partie de) la documentation existe. Dans ce cas, UIKit utilise CGFloat tous les coins, de sorte que l'interlocuteur peut avoir seulement regardé dans les UIKit docs. @Mikhalo Ivanokov, ce que vous avez besoin est le Core Graphique (CG) docs: developer.apple.com/library/ios/documentation/CoreGraphics/... il est Également utile d'Apple en ligne de la recherche de documentation (que j'ai trouvé de mieux que de Xcode ou, à cette fin, Google): developer.apple.com/library/ios/search/?q=CGFloat+max
- Je sais que la documentation peut être difficile de naviguer, et je comprends que c'est une compétence qui doit être apprise, mais en tapant "CGFloat" dans Xcode de la zone de recherche vous conduit directement à la CGGeometry de référence.
Vous devez vous connecter pour publier un commentaire.
CGGeometry définit:
Pour ceux qui utilisent Swift 2, vous devez utiliser:
Pour ceux qui utilisent Swift 3, vous devez utiliser:
Noter que
CGFloat.max
a été supprimé lors de la Swift 3 est sorti, comme en témoigne la la documentation.CGFloat.greatestFiniteMagnitude
: "Correspond à la C macros FLT_MAX, DBL_MAX, etc. La désignation de ces macros est un peu trompeur, parce que l'infini est supérieur à cette valeur."Comment sur
CGFLOAT_MAX
?Un
CGFloat
est juste unfloat
de sorte que vous pouvez utiliser en toute sécuritéFLT_MAX
de<float.h>
.EDIT: Comme d'autres l'ont maintenant fait observer qu'il ressemble
CGFLOAT_MAX
est déjà défini pour vous, alors vous devriez l'utiliser pour des raisons de cohérence plutôt que deFLT_MAX
, même si elles sont la même chose sur les plates-formes 32 bit.Je cherchais un Swift version de minimum CGFloat valeur et a atterri ici, si vous aussi 😉 alors voici la réponse:
C'est plus un commentaire qu'une réponse, cependant je n'ai pas assez de réputation pour commentaire au présent.
Je viens de tomber sur un comportement inattendu avec l'aide de CGFLOAT_MAX: sur un iPhone 5S (64 bits) sous iOS 7.1.2 et à l'aide de Xcode 5.1.1, le code suivant:
Sorties:
Considérant que, de ce code:
Correctement les résultats:
Je commande+clic sur le CGFLOAT_MAX et Xcode m'a pris à la CoreGraphics cadres CGBase.h fichier avec la macro suivante définition:
Je commande+cliqué sur CGFloat et Xcode m'a pris pour une autre ligne dans le même fichier:
Alors je commande+clic sur le CGFLOAT_TYPE et il a sauté à la #define ligne ici:
Si, pour une raison quelconque, mon CGFloat variable est censé être un double, toutefois, il semble être un flotteur qui déborde quand il se voit assignée une valeur de type double (c'est à dire CGFLOAT_MAX). Aussi loin que je peux dire cette page de documentation Apple indique à l'aide de %f avec NSLog devrait imprimer le double - quelqu'un s'il vous plaît corrigez-moi si c'est faux.
Tout ça pour dire, si FLT_MAX qui fonctionne pour votre cas, vous pouvez s'en tenir à cela pour l'instant au lieu de CGFLOAT_MAX, surtout si vous êtes en s'appuyant sur une bibliothèque spécialement accepter les arguments de type float au lieu de double ou CGFloat.
width = 0.0000000000000000000000000000000000000117549435, hauteur = 3.40282347 E+38
Dans Swift 3.0, Vous pouvez également utiliser CGFloat(FLT_MAX), surtout si vous souhaitez l'utiliser dans d'autres cas, comme zIndex, où CGFloat.greatestFiniteMagnitude sera hors de portée.