2013-10-02 11 views
6

Objective-Cでは 'Loading'と書かれたUILabelがあります。 0.5秒ごとに文字列が別の 'を取得します。 3つの点があるまで、それは始まります。私が直面している問題は、文字列が中央に配置され、各ドットが現れたときに文字列がジャンプすることです。文字列がジャンプする理由は、UILabelが適切な空白を削除し続けるためです。UILabelのテキストには末尾に複数のスペースが含まれています

ここには、現在起こっていることの例があります。

+------------+ 
| Loading | 
+------------+ 
| Loading. | 
+------------+ 
| Loading.. | 
+------------+ 
| Loading... | 
+------------+ 

これは私が起こりたいことです。

+------------+ 
| Loading | 
+------------+ 
| Loading. | 
+------------+ 
| Loading.. | 
+------------+ 
| Loading... | 
+------------+ 

UILabelの幅を広くして左揃えにすることはオプションではありません。これはテキストで行う必要があります。

私はこれを見つけましたlinkしかし、私はまだそれを把握できません。

私は現在これがあります。テキストがラベルに働く

[NSString stringWithFormat:@"%-3.3s", [@"" UTF8String]]; 
[NSString stringWithFormat:@"%-3.3s", [@"." UTF8String]]; 
[NSString stringWithFormat:@"%-3.3s", [@".." UTF8String]]; 
@"..."; 
+2

はなぜオプション*** ***揃っていない残っていますか?それは一番簡単な解決策のようです。 –

+0

@MichaelDautermann UILabelのビューは非常に動的で、多くの場所で使用されているためです。すでに膨大な量の機能を拡張することは望ましくありません。 – cnotethegr8

+0

そのラベルにモノスペースフォントを使用していますか?そうでない場合は、空白を追加すると、とにかく整列したテキストが得られない可能性があります。 –

答えて

4

方法です - あなたは、IOSは、その上の制御を取るしたくない場合などトリミングのように - それは、標準の書式情報によってフォーマットされています。プログラムによって、attributedTextを設定することができます。これは書式設定を行うことはありません。その上にリンゴのドキュメントがあります

attributedTextラベルで表示されるスタイル付きテキストです。

@property(非アトミック、コピー)NSAttributedString * attributedText 説明このプロパティは、デフォルトではnilです。 に新しい値を割り当てると、このプロパティでは、書式設定情報がなくても、テキストプロパティの値が同じ文字列データの に置き換えられます。 では、新しい値を割り当てると、フォント内の値、 textColor、およびその他のスタイル関連プロパティが更新され、属性付き文字列の位置0から始まる スタイル情報が反映されます。

基本的に「ロード」にuilabelのattributedtextを設定

1

は解決策が見えcharatersを末尾に追加して、透明それらを設定しているthis

を見てみましょう。

1

セットlabel.textAlignment = NSTextAlignmentNatural。これは、以前はNSTextAlignmentLeftでした。

テキストは中央に配置する必要があるため、ラベルのすべての余白がラッパービューの余白に固定された状態でUIViewにラップします。ラベルの代わりにラッパーを中央に置きます。

はここのコードです:

UIView* wrapper = [[UIView alloc] init]; 
wrapper.translatesAutoresizingMaskIntoConstraints = NO; 
//This sets the wrapper at the center of where you were adding the label previously 
[wrapper.centerXAnchor constraintEqualToAnchor: superview.centerXAnchor].active = YES; 

label.translatesAutoresizingMaskIntoConstraints = NO; 
[label.leadingAnchor constraintEqualToAnchor:wrapper.leadingAnchor].active = YES; 
[label.trailingAnchor constraintEqualToAnchor:wrapper.trailingAnchor].active = YES; 
[label.topAnchor constraintEqualToAnchor:wrapper.topAnchor].active = YES; 
[label.bottomAnchor constraintEqualToAnchor:wrapper.bottomAnchor].active = YES; 

label.textAlignment = NSTextAlignmentNatural 
... 
関連する問題