似乎UITextAlignmentCenter
在iOS 6中已弃用。
我仍然使用它并且运行良好,但是会发出警告。
我怎样才能解决这个问题?
label.textAlignment = UITextAlignmentCenter;
谢谢。
似乎UITextAlignmentCenter
在iOS 6中已弃用。
我仍然使用它并且运行良好,但是会发出警告。
我怎样才能解决这个问题?
label.textAlignment = UITextAlignmentCenter;
谢谢。
Answers:
在iOS6中,您可以使用
label.textAlignment = NSTextAlignmentCenter;
希望这可以帮助。
该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;
以上方法适用于新方法 ; 您会收到警告,但一切正常。但是,当编译器看到一个未知的常量时,它将变为红色并停止在其轨迹中。没有办法可以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];
在iOS 6或更高版本中
使用此值:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
斯威夫特3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
。