web-dev-qa-db-ja.com

iOS 6のラベルの配置-UITextAlignmentは非推奨

UITextAlignmentCenterはiOS 6で廃止されるようです。

私はまだそれを使用しており、うまく機能していますが、警告が出ます。

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

label.textAlignment = UITextAlignmentCenter;

ありがとう。

188
user123

IOS 6では、使用できます

label.textAlignment = NSTextAlignmentCenter;

お役に立てれば。

391
majorl3oat

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ではテストしていません。)

44
Wienke

NSTextAlignmentCenterUITextAlignmentCenterの代わりに使用できます。他の置換のリストは以下のとおりです。

#ifdef __IPHONE_6_0 // iOS6 and later
#   define UITextAlignmentCenter    NSTextAlignmentCenter
#   define UITextAlignmentLeft      NSTextAlignmentLeft
#   define UITextAlignmentRight     NSTextAlignmentRight
#   define UILineBreakModeTailTruncation     NSLineBreakByTruncatingTail
#   define UILineBreakModeMiddleTruncation   NSLineBreakByTruncatingMiddle
#endif
19
nhisyam
#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];
15
neoneye

これらのいずれかを行う必要はありません。 Xcode 4.5は、iOS 5でNSTextAlignmentCenterなどを正常にコンパイルします。

13
Aaron Brager
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];
2
Gaurav Gilani
labelName.textAlignment=NSTextAlignmentLeft;
1
Mubin Shaikh

iOS 6以降

この値を使用します:

self.lbl_age.textAlignment=NSTextAlignmentCenter;

0
Hiren Dhamecha

スウィフト3:

label.textAlignment = NSTextAlignment.center
0
Jerry Krinock

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

0
BrainyMonkey