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