Bu genişlik için, ancak CGRect'inize uyması için yüksekliğe uyarlayabilirsiniz. Örnekte, pg, kullandığınız yazı tipiyle başlatılan bir SKLabelNode'dur. Argümanlar, String'iniz ve hedef genişliğinizdir ve sonuç, SKLabelNode'unuza atamak istediğiniz boyuttur. Tabii ki, doğrudan SKLabelNode'u da koyabilirsiniz. Boyut çok büyükse, maksimum boyut 50'dir, ancak bu kişiseldir.
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))
}
Düzenleme: Ben de bu yazmıştı Aslında sadece fark:
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
}
birisi bu kodu için objc ekleyebilir. Teşekkürler. – GeneCode
Etiket düğümü ve dikdörtgen arasında ek bir dolgu isteyebilirsiniz. 'MIN (rect.size.width/(labelNode.frame.size.width + PADDING), rect.size.height/(labelNode.frame.size.height + PADDING)); – Wouter