UITextAlignmentCenter
はiOS 6で廃止されるようです。
私はまだそれを使用しており、うまく機能していますが、警告が出ます。
どうすれば修正できますか?
label.textAlignment = UITextAlignmentCenter;
ありがとう。
IOS 6では、使用できます
label.textAlignment = NSTextAlignmentCenter;
お役に立てれば。
labelAlignment
プロパティの変更は、おそらくAppleがより多くのiOSコントロールにNSAttributedStringsを導入したことに関連しているため、UIText…プロパティをNSText…プロパティに変更する必要があります。
したがって、iOS6にアップグレードした場合は、クローバーになります。 UITextAlignmentCenter
からNSTextAlignmentCenter
に切り替えて、派手な新しい文字列をお楽しみください。
しかし、複雑なプロジェクトで作業していて、地球が足の下であまり動かないことを好む場合は、しばらくの間、古いバージョンを使い続け、複数のバージョンにコードを適応させることができます。
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
上記のアプローチは、新しいmethods;に対して機能します。警告は表示されますが、すべて正常に実行されます。しかし、コンパイラーが知らないconstantを検出すると、コンパイラーは赤に変わり、そのトラックで停止します。 NSTextAlignmentCenter
をこっそり抜ける方法はありません。 (まあ、ここでコンパイラの動作をカスタマイズする方法があるかもしれませんが、お勧めできません。)
回避策は、条件付きプリプロセッサ定義を追加することです。クラスのhファイル(またはインポートされた定数ファイル-NSText ...定数を知るためにそれ自体が#import <UIKit/UIKit.h>
を含まなければならない)にこのような何かを置くと…
#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は、iOS 5でNSTextAlignmentCenter
などを正常にコンパイルします。
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;
iOS 6以降
この値を使用します:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
スウィフト3:
label.textAlignment = NSTextAlignment.center
同様の問題があり、次を使用しました。detailsLabel.textAlignment = NSTextAlignmentCenter;