193

UITextAlignmentCenteriOS6では廃止されたようです。

私はまだそれを使用していてうまく機能しますが、警告が表示されます。

どうすればこれを修正できますか?

label.textAlignment = UITextAlignmentCenter;

ありがとう。

4

11 に答える 11

397

iOS6では次を使用できます

label.textAlignment = NSTextAlignmentCenter;
于 2012-09-22T02:42:39.780 に答える
44

プロパティの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ではまだテストしていません。)

于 2012-09-27T22:56:21.760 に答える
19

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
于 2012-11-15T05:58:08.093 に答える
15
#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];
于 2012-10-20T12:24:08.903 に答える
13

これらのいずれかを行う必要はありません。Xcode 4.5はNSTextAlignmentCenter、iOS5などで問題なくコンパイルされます。

于 2013-01-09T23:08:50.733 に答える
2
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];
于 2014-05-21T13:41:58.313 に答える
1
labelName.textAlignment=NSTextAlignmentLeft;
于 2014-05-21T13:44:57.170 に答える
0

同様の問題が発生し、次を使用しました。detailsLabel.textAlignment = NSTextAlignmentCenter;

于 2015-07-22T09:56:44.737 に答える
0

iOS6以降の場合

この値を使ってください :

self.lbl_age.textAlignment=NSTextAlignmentCenter;

于 2016-03-30T10:56:37.747 に答える
0

スウィフト3:

label.textAlignment = NSTextAlignment.center
于 2016-10-19T17:37:29.267 に答える
0

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 
}
于 2020-09-04T08:11:46.953 に答える