UILabel standardını alıp dikey alanı doldurması için yazı tipi boyutunu arttırmak istiyorum.Yazı tipi boyutunu dikey olarak sığacak şekilde ölçekleme UILabel
- (void)drawRect:(CGRect)rect
{
// Size required to render string
CGSize size = [self.text sizeWithFont:self.font];
// For current font point size, calculate points per pixel
float pointsPerPixel = size.height/self.font.pointSize;
// Scale up point size for the height of the label
float desiredPointSize = rect.size.height * pointsPerPixel;
// Create and assign new UIFont with desired point Size
UIFont *newFont = [UIFont fontWithName:self.font.fontName size:desiredPointSize];
self.font = newFont;
// Call super
[super drawRect:rect];
}
Ama etiketin alt ötesine yazı ölçekler olarak bu işe yaramazsa: Bu question için kabul edilen yanıt ilham alan bu drawRect uygulamasıyla UILabel bir alt sınıfı tanımlanmıştır. Bunu çoğaltmak isterseniz, 289x122 (w x h), Helvetica yazı tipi ve 60 etiketli bir başlangıç noktası ile etiket içinde rahatça oturan bir etiketle başladım.
Ben, yazı tipi kuyruklu ve ascenders baktım dikkate bunlardan yola çıkarak ölçeklendirme çalıştı: Burada dize "{Hg" kullanarak standart UILabel ve benim alt sınıf örnek çıkışı farklı kombinasyonlar, ama hala hiç şans yoktu. Herhangi bir fikir, bu farklı descender ve ascender uzunlukları olan farklı yazı tipleri ile ilgisi var mı?
iyi ... bu utanç verici bir şekilde basit bir hataydı. Onu gördüğünüz için teşekkürler. – user524261
Bunu "layoutSubviews" uygulamasında denedim, ancak işe yaradığını düşünmüyorum. Bunun sebebi, "UILabel" alt sınıfına yeni bir fontun atanmasının, sorun olan "layoutSubviews" ın başka bir çağrısını tetiklemesi olduğunu düşünüyorum. Uygulamamda, uygulamamın kuyruğundan biri kilitlendi. – user444731