UITextAlignmentCenter
iOS6では廃止されたようです。
私はまだそれを使用していてうまく機能しますが、警告が表示されます。
どうすればこれを修正できますか?
label.textAlignment = UITextAlignmentCenter;
ありがとう。
iOS6では次を使用できます
label.textAlignment = NSTextAlignmentCenter;
プロパティのlabelAlignment
変更は、おそらくAppleがNSAttributedStringsをより多くのiOSコントロールに導入したことに関連しているため、UIText…プロパティをNSText…プロパティに変更する必要があります。
したがって、iOS6にアップグレードした場合は、クローバーになります。UITextAlignmentCenter
からに切り替えてNSTextAlignmentCenter
、新しいストリングをお楽しみください。
ただし、複雑なプロジェクトで作業していて、地球が足元であまり動かないようにしたい場合は、しばらくの間古いバージョンを使用し、コードを複数のバージョンに適合させることをお勧めします。たとえば、次のようになります。
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
上記のアプローチは、新しいメソッドで機能します。警告が表示されますが、すべて正常に実行されます。しかし、コンパイラーが知らない定数を検出すると、コンパイラーは赤に変わり、そのトラックで停止します。それをこっそり通り抜ける方法はありませんNSTextAlignmentCenter
。(まあ、ここでコンパイラの動作をカスタマイズする方法があるかもしれませんが、それはお勧めできません。)
回避策は、いくつかの条件付きプリプロセッサ定義を追加することです。このようなものをクラスのhファイル(またはインポートされた定数ファイル#import <UIKit/UIKit.h>
-NSText ...定数について知るためにはそれ自体に含める必要があります)に入れると…</ p>
#ifdef NSTextAlignmentCenter // iOS6 and later
# define kLabelAlignmentCenter NSTextAlignmentCenter
# define kLabelAlignmentLeft NSTextAlignmentLeft
# define kLabelAlignmentRight NSTextAlignmentRight
# define kLabelTruncationTail NSLineBreakByTruncatingTail
# define kLabelTruncationMiddle NSLineBreakByTruncatingMiddle
#else // older versions
# define kLabelAlignmentCenter UITextAlignmentCenter
# define kLabelAlignmentLeft UITextAlignmentLeft
# define kLabelAlignmentRight UITextAlignmentRight
# define kLabelTruncationTail UILineBreakModeTailTruncation
# define kLabelTruncationMiddle UILineBreakModeMiddleTruncation
#endif
…あなたはこれを行うことができます:
label.textAlignment = kLabelAlignmentCenter;
この:
label.lineBreakMode = kLabelTruncationMiddle;
等。
これらのUIText/NSTextの変更は複数のコントロールに表示される可能性が高いため、このアプローチは非常に便利です。
(警告:前述の安定した地球の愛好家のメンバーであるため、私はこれを古いバージョンでテストしましたが、iOS6ではまだテストしていません。)
NSTextAlignmentCenter
の代わりに使用できUITextAlignmentCenter
、他の代替品のリストは以下のとおりです。
#ifdef __IPHONE_6_0 // iOS6 and later
# define UITextAlignmentCenter NSTextAlignmentCenter
# define UITextAlignmentLeft NSTextAlignmentLeft
# define UITextAlignmentRight NSTextAlignmentRight
# define UILineBreakModeTailTruncation NSLineBreakByTruncatingTail
# define UILineBreakModeMiddleTruncation NSLineBreakByTruncatingMiddle
#endif
#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0)
# define ALIGN_CENTER NSTextAlignmentCenter
#else
# define ALIGN_CENTER UITextAlignmentCenter
#endif
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
label.text = @"There is no spoon";
label.textAlignment = ALIGN_CENTER;
[self addSubview:label];
これらのいずれかを行う必要はありません。Xcode 4.5はNSTextAlignmentCenter
、iOS5などで問題なくコンパイルされます。
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 150, 40)];
[label1 setText:@"Your String"];
[label1 setBackgroundColor:[UIColor clearColor]];
[label1 setNumberOfLines:0];
[label1 sizeToFit];
//For Center Alignment
[label1 setTextAlignment:NSTextAlignmentCenter];
//For Right Alignment
[label1 setTextAlignment:NSTextAlignmentRight];
//For Left Alignment
[label1 setTextAlignment:NSTextAlignmentLeft];
// Add the label into the view
[self.view addSubview:label1];
labelName.textAlignment=NSTextAlignmentLeft;
同様の問題が発生し、次を使用しました。detailsLabel.textAlignment = NSTextAlignmentCenter;
iOS6以降の場合
この値を使ってください :
self.lbl_age.textAlignment=NSTextAlignmentCenter;
スウィフト3:
label.textAlignment = NSTextAlignment.center
Swift 5以降の使用:
yourLabel.textAlignment = .center
設定できる場所:
public enum NSTextAlignment : Int {
case left = 0 // Visually left aligned
case center = 1 // Visually centered
case right = 2 // Visually right aligned
case justified = 3 // Fully-justified. The last line in a paragraph is natural-aligned.
case natural = 4 // Indicates the default alignment for script
}