2013-02-01 17 views
98

Daha önce minimumFontSize kullanıyorum, ancak bu işlev artık kullanımdan kaldırıldı ve minimumScaleFactor'un nasıl çalıştığını anlamıyorum. UILabel'ın minimumScaleFactor'ı nasıl çalışır?

Ben maksimum font boyutu 10 olmak istiyorum ve minimum 7.

nasıl ölçek faktörü ile yazı tipi boyutu 7 aşağı yeniden boyutunu elde edebilirsiniz olmak?

UILabel oluşturma:

UILabel *label = [[UILabel alloc] init]; 
[label setTranslatesAutoresizingMaskIntoConstraints:NO]; 
label.text = [labelName uppercaseString]; 
label.textAlignment = NSTextAlignmentCenter; 
label.textColor = [UIColor whiteColor]; 
label.font = [UIFont fontWithName:HELVETICA_FONT_STYLE_BOLD size:9.5]; 
label.backgroundColor = [UIColor clearColor]; 
label.minimumScaleFactor = .1f; 

[label addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[label(WIDTH)]" 
                   options:0 
                   metrics:@{@"WIDTH" : [NSNumber numberWithFloat:buttonSize.width]} 
                   views:NSDictionaryOfVariableBindings(label)]]; 

[contentView addSubview:label]; 

cevap

20

documentation göre:

kullanın bu özelliği gösteren kullanılacak kabul edilebilir bir yazı boyutu ortaya geçerli yazı tipi boyutu için en küçük çarpan belirtmek için etiket en Metin. Bu özellik için 0 değerini belirtirseniz, geçerli yazı tipi boyutu en küçük yazı tipi boyutu olarak kullanılır. etiketiniz için varsayılan yazı tipi boyutunu 10 ise

Yani, bir minimumScaleFactor olarak 0.7f koyup minimumFontSize yaptığı gibi aynı şeyi yapmalıdır.

+0

Ayrıca düşündüğüm şey; ama ben 0.1f olarak koyduğumda, metin boyutunu ayarlamaz. uilabel kodunu ekleyeceğim. – Padin215

+0

Kısıtlamaları kaldırır ve etiket çerçevesini küçültürseniz ne olur? – kovpas

+8

Log139: Sizin numberOfLines ayarlanmış nedir? Apple'ın belgeleri, minimumScaleFactor'ın yalnızca numberOfLines 1'e ayarlanmışsa çalıştığını söylüyor. 0'ı veya 1'den büyük bir şey çalışmayacak. – SeanK

178

Sen minimumScaleFactor olarak minSize/defaultSize (bölme) koyarsanız, eski minimumFontSize kullanarak aynı olacaktır, diğer cevaplar söylediklerine ek olarak label.adjustsFontSizeToFitWidth = YES;

+0

Mükemmel, bu benim kendi kodumda eksik olan şey. Teşekkürler: D – Fogmeister

+19

Aslında ilk soruya cevap vermiyor .. – beryllium

+10

Not: "Apple'ın belgelerine göre minimumScaleFactor sadece numberOfLines 1 olarak ayarlanmışsa çalışır.0 ya da 1'den büyük herhangi bir şey işe yaramaz. "Teşekkürler SeanK. – samthui7

102

ayarlamanız gerekir. Minimum yazı tipi boyutu varsayılan etiket boyutu kullanılarak 10 olmak istiyorsanız

Ex, bunu yapabilirsiniz:

[label setMinimumScaleFactor:10.0/[UIFont labelFontSize]];

(varsayılan değilse senin etiketin punto ile [UIFont labelFontSize] değiştirin).

Nasıl minimumScaleFactor hesaplamak için: diğer yanıtlar yanı sıra [label setMinimumFontSize:10.0];

+0

bölümü CGFloat olarak dökülmelidir, aksi takdirde işe yaramazsa – dwery

+0

@dwery Yapıyor 10/labelSize kesilmiş bir tamsayı değeriyle 0 olabilir ancak 10.0 veya 10.f, düzgün bir şekilde döküm yapmadan, iyi bir şekilde çalışabilir. – Kalle

+0

Hangi kodun benim için işe yaramadığını hatırlayamıyorum, muhtemelen f ya da noktayı kaçırıyordu. – dwery

5

, kendimi yardımcı bir acemi dostu bir açıklama eklemek için gidiyorum: aynı olurdu

? Etiketinizin minimum yazı tipi boyutunu etiketinizin varsayılan yazı tipi boyutuna göre bölün. Örneğin, varsayılan yazı tipi boyutu 25. Minimum yazı tipi boyutu 10.

10/25 = 0,4

0,4 sizin minimumScaleFactor değerdir olmasıdır. Ayrıca bkz. @ Jsdodgers'ın cevabı yukarıdaki.