2013-02-01 14 views
98

私は以前にminimumFontSizeを使用しましたが、その機能は廃止されました。私はどのようにしてminimumScaleFactorが動作するのかよくわかりません。UILabelのminimumScaleFactorはどのように機能しますか?

私は最大のフォントサイズが10とどのように私はスケールファクタでダウンフォントサイズ7への再サイズを達成することができます7.

なるように最小になりたいですか? documentationによると

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]; 

答えて

20

UILabel作成

ラベルの表示に使用するために許容可能なフォントサイズをもたらし、現在のフォントサイズの最小乗数を指定するには、このプロパティを使用しますテキスト。このプロパティに値0を指定すると、現在のフォントサイズが最小のフォントサイズとして使用されます。

だからあなたのラベルのデフォルトのフォントサイズが10であれば、あなたはminimumScaleFactorとして0.7fを入れて、minimumFontSizeがしたとして、それは同じことを行う必要があります。

+0

私も同じだと思った。しかし、私は0.1fとしてそれを置く、テキストはサイズを調整しません。私はユーラベルコードを追加します。 – Padin215

+0

制約を削除してラベルのフレームを縮小するだけの場合はどうすればよいですか? – kovpas

+8

Log139:あなたのnumberOfLinesは何に設定されていますか? Appleのドキュメントによると、minimumScaleFactorは、numberOfLinesが1に設定されている場合にのみ機能します.0などを使用すると、1を超える値は機能しません。 – SeanK

178

はあなたがminimumScaleFactorように、minSize/defaultSize(除算)を置けば、それは古いminimumFontSizeを使用するのと同じになり、他の回答の言うことに加えてlabel.adjustsFontSizeToFitWidth = YES;

+0

これは私自身のコードでは見逃せないものです。ありがとう:D – Fogmeister

+19

実際には、最初の質問に答えません。 – beryllium

+10

注: "Appleのマニュアルによると、minimumScaleFactorはnumberOfLinesが1に設定されている場合にのみ機能します。おかげでSeanKさん – samthui7

102

を設定する必要があります。あなたが最小フォントサイズがデフォルトのラベルサイズを使用して10になりたい場合は

例、あなたが行うことができます:

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

(それがデフォルトでない場合は、あなたのラベルのフォントサイズと[UIFont labelFontSize]を交換してください)。同じになり

:他の回答に加えて [label setMinimumFontSize:10.0];

+0

部門CGFloatとしてキャストする必要があります。それ以外の場合は動作しません。 – dwery

+0

@dwery 10/labelSizeを行うと、切り捨てられた整数値は0になりますが、10.0または10.fは明示的にキャストすることなく正常に動作します。 – Kalle

+0

そうですどのコードでそれが私にとってはうまくいかなかったのを覚えていないかもしれません。たぶんそれはfやドットが見当たりませんでした。 – dwery

5

は、私は自分自身を助け初心者に優しい説明を追加するつもりです:

minimumScaleFactorを計算する方法は?ラベルの最小フォントサイズをラベルのデフォルトフォントサイズで割ります。たとえば、あなたのデフォルトのフォントサイズは25です。あなたの最小フォントサイズが10

10/25 = 0.4

0.4は、あなたのminimumScaleFactor値であるです。上記の@ Jsdodgersの答えも見てください。