ich geschrieben habe dies für die Breite, aber Sie können es an die Höhe anpassen, um zu Ihrem CGRect zu passen. In diesem Beispiel ist pg ein SKLabelNode, der mit der von Ihnen verwendeten Schriftart initialisiert wurde. Argumente sind Ihre Zeichenfolge und die Zielbreite, und das Ergebnis ist die Größe, die Sie Ihrem SKLabelNode zuweisen möchten. Natürlich können Sie auch Ihren SKLabelNode direkt eingeben. Wenn die Größe zu groß ist, dann ist die maximale Größe 50, aber das ist persönlich.
func getTextSizeFromWidth(s:String, w:CGFloat)->CGFloat {
var result:CGFloat = 0;
var fits:Bool = false
pg!.text=s
if(s != ""){
while (!fits) {
result++;
pg!.fontSize=result
fits = pg!.frame.size.width > w;
}
result -= 1.0
}else{
result=0;
}
return min(result, CGFloat(50))
}
Edit: Eigentlich habe ich gerade realisiert hatte ich auch diese geschrieben:
extension SKLabelNode {
func fitToWidth(maxWidth:CGFloat){
while frame.size.width >= maxWidth {
fontSize-=1.0
}
}
func fitToHeight(maxHeight:CGFloat){
while frame.size.height >= maxHeight {
fontSize-=1.0
}
jemand Kann ObjC für diesen Code hinzufügen. Vielen Dank. – GeneCode
Beachten Sie, dass Sie möglicherweise eine zusätzliche Auffüllung zwischen dem Label-Knoten und dem Rechteck wünschen. 'MIN (rect.size.width/(labelNode.frame.size.width + PADDING), rect.size.height/(labelNode.frame.size.height + PADDING));' – Wouter