2011-09-13 25 views
6

UIFont sizeWithFont tarafından döndürülene göre bir UILabels çerçevesi ayarlıyorum ancak özel bir font kullandığımda, geri dönen değerler aşağıda görüldüğü gibi bazı dolguları içeriyor.Neden UIFont sizeWithFont hesaplamada boş alan içeriyor?

i boldSystemFontOfSize metin kullanmak dikey ortasında (i istediğim şey ) hizalanmış, ama fontWithName kullandığınızda i metnin altında dolgu ile sona edilmektedir. sizeWithFont'un dolguya eklenmesinin herhangi bir nedeni var mı? İşte

enter image description here

kodum ...

CGRect frameLabel = label.frame; 
CGSize sizeLabel = [label.text sizeWithFont:label.font]; 
frameLabel.size.width = sizeLabel.width; 
frameLabel.size.height = sizeLabel.height; 
[label setBackgroundColor:[UIColor redColor]]; 

** Düzenleme **

Bu kodu kullanarak üst ve alt dolgu hesaplamak ve Etiketleri frame.origin ayarlayabilirsiniz

.y, Etiketimin nerede olacağı konusunda merkezi olarak ortalamak için

float topPadding = [label.font ascender] - [label.font capHeight]; 
float bottomPadding = [label.font lineHeight] - [label.font ascender]; 
+0

mümkün mü olduğunu ben kullanıyorum yazı "Gotham" inclu Bu yazı doldurmayı ve yazı tipini düzenlemem gerekecek mi? – AlBeebe

cevap

3

Yazı, bu doldurmanın tek olası nedenidir, ancak yalnızca tek satırlık etiketlere ihtiyacınız varsa, zamanınızı yazı tipini düzenleyerek boşa harcamayın; uygun bir çerçeveyi ayarladıktan sonra etiketin yüksekliğini bu gibi birkaç pikselle azaltın. Bu: yerine

Ayrıca
label.frame = CGRectInset(label.frame, 0, bottomPadding); 

:

CGRect frameLabel = label.frame; 
CGSize sizeLabel = [label.text sizeWithFont:label.font]; 
frameLabel.size.width = sizeLabel.width; 
frameLabel.size.height = sizeLabel.height; 

sadece çağırabilirsiniz:

[label sizeToFit]; 
+0

Şüphelimi doğruladın. Merak etme, yazı tipinin hangi alt kısımdaki bu ekstra dolguya neden olduğu hakkında bir fikrin var mı? – AlBeebe

+0

Sadece% 100 teyit ettiğin gibi soruna neden olan gerçek yazı tipi olduğunu doğruladı. FontForge'ı indirdim ve Helvetica.ttf'ın sahip olduğu şeyle eşleşmesi için gotham.ttf'in her bir ayarını değiştirdim ve ekstra dolguyu kaldırmak için kullanabiliyordum. – AlBeebe

+0

Merhaba AlBeebe. Aynı sorunu yaşıyorum ve FontForge kullanarak bazı yazı tipi özelliklerini değiştirmeye çalışıyorum. Bana hangi değerleri değiştirdiğini açıklayabilir misin? Çok teşekkürler! – LocoMike

İlgili konular