2009-09-06 12 views
6

200 piksel genişliğinde ve 50 piksel yüksekliğinde bir UILabel düşünün. Etiketin içinde metin vardır ve etiket metni metne daha sığdırır, böylece etikete sığar. Ama şimdi, UIFont'un etiketinde nasıl göründüğünü nasıl bulabilirsin? Yazı büyüklüğünün büyük 100 ile verildiğini ve etiketin 15'e kadar sıkıştırdığını düşünelim. Ve sonra, aynı yazı boyutu olan küçük metinler içeren başka etiketler yapmak istersiniz. Etiketten sıkıldıktan sonra UIFont'un yazı tipi boyutunu elde etmenin bir yolu var mı?Etiket içindeki metin sığacak şekilde sığdırıldığında UIFont'un boyutu nasıl hesaplanır?

cevap

15

vb UILabel ve breakMode e boyutunu iletirseniz:

CGSize size = [label.text sizeWithFont:label.font minFontSize:10 actualFontSize:&actualFontSize forWidth:200 lineBreakMode:UILineBreakModeTailTruncation]; 

actualFontSize aradığınız şey olmalıdır.

GÜNCELLEME:

yukarıda kullanımdan kaldırıldı. İşte

- (CGRect)textRectForBounds:(CGRect)bounds 
    limitedToNumberOfLines:(NSInteger)numberOfLines 

CGSize size = [label textRectForBounds:label.bounds 
    limitedToNumberOfLines:1].size; 
+0

Yani actualFontSize O yönteme başvurularak geçmesi bir CGSize olacağını bir örnek: artık kullanıma yöntemdir? –

+0

Evet. C ve Obj C'de, değerlerin nasıl döndürüleceği konusunda bir işlev sınırlandırılmıştır. Bir işleve ilettiğiniz argümanlar değerlendirilir ve işlev çağrılmadan önce değerleri yığına aktarılır. Fonksiyon sadece bu değerleri alır ve bunlarda dönüş değeri iletemez. İtilen şey bir işaretçi değilse, bu durumda işlev işaretçiyi adresine yazmak ve değiştirmek için kullanabilir. Aşırı basitleştiriciyim - burada actualFontSize, işlevin (yöntem) döndürülen değerlerinden biridir. – mahboudz

+0

Bu, iOS7'de kullanımdan kaldırılmıştır. IOS8'in değiştirilmesi var mı? –

İlgili konular