のようUITextAlignmentCenter
ですiOS 6で非推奨。
私はまだそれを使用し、うまく機能しますが、警告を出します。
どうすれば修正できますか?
label.textAlignment = UITextAlignmentCenter;
ありがとう。
のようUITextAlignmentCenter
ですiOS 6で非推奨。
私はまだそれを使用し、うまく機能しますが、警告を出します。
どうすれば修正できますか?
label.textAlignment = UITextAlignmentCenter;
ありがとう。
回答:
iOS6で使用できます
label.textAlignment = NSTextAlignmentCenter;
お役に立てれば。
labelAlignment
プロパティの変更は、おそらくAppleのは、より多くのiOSコントロールのにNSAttributedStringsを導入し、それゆえ... NSTextにプロパティをUIText ...プロパティを変更する必要に関連しています。
したがって、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 ...定数について知るためにそれ自体が含まれている必要があります)に配置した場合…
#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
iOS 5で等をコンパイルします。
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];
同様の問題があり、以下を使用しました。detailsLabel.textAlignment= NSTextAlignmentCenter;
スウィフト3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
。