在iOS 6中不推荐使用UITextAlignmentCenter
。
我仍然使用它并且效果很好,但它会发出警告。
我该如何解决这个问题?
label.textAlignment = UITextAlignmentCenter;
感谢。
答案 0 :(得分:391)
在iOS6中,您可以使用
label.textAlignment = NSTextAlignmentCenter;
希望这有帮助。
答案 1 :(得分: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 ...常量)......
#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测试过。)
答案 2 :(得分: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
答案 3 :(得分: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];
答案 4 :(得分:13)
您不必执行其中任何一项操作。 Xcode 4.5将在iOS 5中编译NSTextAlignmentCenter
等。
答案 5 :(得分: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];
答案 6 :(得分:1)
labelName.textAlignment=NSTextAlignmentLeft;
答案 7 :(得分:0)
我有类似的问题并使用以下内容: detailsLabel.textAlignment = NSTextAlignmentCenter;
答案 8 :(得分:0)
使用此值:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
答案 9 :(得分:0)
斯威夫特3:
label.textAlignment = NSTextAlignment.center
答案 10 :(得分: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
}