SORU
1 ŞUBAT 2011, Salı


Dinamik UİLabel yazı tipi boyutunu değiştirme

Ben şu anda UILabel bir:

factLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 280, 100)];
factLabel.text = @"some text some text some text some text";
factLabel.backgroundColor = [UIColor clearColor];
factLabel.lineBreakMode = UILineBreakModeWordWrap;
factLabel.numberOfLines = 10;
[self.view addSubview:factLabel];

Benim iOS hayatı boyunca uygulama, factLabel farklı değerleri bir sürü alır. Birden fazla cümle, sadece 5 ya da 6 kelime ile bir kişi.

Nasıl yazı tipi boyutu metin her zaman sınırları içinde sığacak şekilde değiştirir böylece UILabel kurmak tanımlanmış olabilir miyim?

CEVAP
1 ŞUBAT 2011, Salı


Tek satır:

factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;

Yukarıdaki kod, metnin yazı tipi (örneğin) boyut 8 etiket içinde metni sığdırmak için çalışıyorum ayarlayacaktır. numberOfLines = 1 zorunludur.

Birden fazla satır:

numberOfLines > 1 *örneğin 23* yöntemlerle nihai metin boyutunu anlamak için bir yöntem vardır:

CGSize lLabelSize = [yourText sizeWithFont: factLabel.font forWidth:factLabel.frame.size.width lineBreakMode:factLabel.lineBreakMode];

Bundan sonra sadece etiket kullanarak örneğin lLabelSize, (sadece etiket yüksekliği değişecek varsayarak) sonuç boyutlandırabilirsiniz:

factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);

iOS6

Tek satır:

İOS6, minimumFontSize ile başlayan kalmıştır. Hattı

factLabel.minimumFontSize = 8.;

değiştirilebilir:

factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;

iOS7

Birden fazla satır:

, *21 iOS7* ile başlayan kaldırılmış olur. Çok satırlı dava düşürüldü

factLabel.numberOfLines = 0;
factLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize maximumLabelSize = CGSizeMake(factLabel.frame.size.width, CGFLOAT_MAX);
CGSize expectSize = [factLabel sizeThatFits:maximumLabelSize];
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, expectSize.width, expectSize.height);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013