iOS 6中的标签alignment – 不build议使用UITextAlignment

好像UITextAlignmentCenter在iOS 6中UITextAlignmentCenter被弃用了。

我仍然使用它,并且运行良好,但它给出警告。

我怎样才能解决这个问题?

 label.textAlignment = UITextAlignmentCenter; 

谢谢。

在iOS6中,您可以使用

 label.textAlignment = NSTextAlignmentCenter; 

希望这可以帮助。

labelAlignment属性的改变可能与Apple向更多的iOS控件引入NSAttributedStrings有关,因此需要将UIText …属性更改为NSText …属性。

所以,如果你已经升级到iOS6,你在三叶草, 只需从UITextAlignmentCenter切换到NSTextAlignmentCenter ,享受新奇的string。

但是,如果你正在处理一个复杂的项目,并且希望地球不会在你的脚下移动太多,你可能需要坚持一个较老的版本一段时间,并适应你的代码多个版本,如下所示:

 // 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变化很可能会出现在多个控件上,所以这种方法非常方便。

(注意:作为上述稳定爱好者的成员,我用旧版本testing过,但还没有iOS6。

NSTextAlignmentCenter可以用来代替UITextAlignmentCenter ,其他replace列表如下:

 #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; 

我有一个类似的问题,并使用以下内容:detailsLabel.textAlignment = NSTextAlignmentCenter;

在iOS 6或更高版本

使用这个值:

self.lbl_age.textAlignment=NSTextAlignmentCenter;

Swift 3:

 label.textAlignment = NSTextAlignment.center