我知道使用NSTextAlignment作为替代方案是可行的...但我的应用程序支持ios 4+ NSTextAlignment仅在ios 6中可用。如何在xcode 5上为旧版本处理它?
答案 0 :(得分:2)
NSArray *versionComponentsArray = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[versionComponentsArray objectAtIndex:0] intValue] >= 6) {
label.textAlignment = NSTextAlignmentCenter;
} else {
label.textAlignment = UITextAlignmentCenter;
}
答案 1 :(得分:1)
试试这个
#ifdef __IPHONE_6_0
# define TEXT_ALIGNMENT_CENTER NSTextAlignmentCenter
#else
# define TEXT_ALIGNMENT_CENTER UITextAlignmentCenter
#endif
label.textAlignment = TEXT_ALIGNMENT_CENTER;
答案 2 :(得分:1)
NSTextAlignment 以及现已弃用的 UITextAlignment 都是enums -
0 represents left
1 represents center
2 represents right
因为这对于两个枚举都是一致的,而不是检查操作系统的版本操作系统并在运行时做出不必要的决定,只需声明自己的typedef枚举并使用它,只要上面列出的三个是你需要的。 ( NSTextAlignment有额外的枚举,UITextAlignment没有)
示例 - 将.h放在需要使用的位置
typedef enum MyTextAlignment : NSInteger {
MyTextAlignmentLeft,
MyTextAlignmentCenter,
MyTextAlignmentRight,
} MyTextAlignment;
编辑: NSTextAlignment 自OSX 10.0(大约2001年)以来一直存在,我非常怀疑枚举的0,1,2会发生变化。此外,如果要管理大量文件,可以将 typedef enum 放在自己的头文件中,然后将标头导入预编译的头文件(.pch)然后您就可以访问它了从任何文件中进行相应的“查找和替换”。
答案 3 :(得分:1)
[label setTextAlignment:[self textAlignment]];
- (int)textAlignment
{
NSArray *versionComponentsArray = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[versionComponentsArray objectAtIndex:0] intValue] >= 6) {
return NSTextAlignmentCenter;
} else {
return UITextAlignmentCenter;
}
}
答案 4 :(得分:1)
更改120个甚至更多文件,
1)制作一个UITextField类别 2)覆盖setTextAlignment方法,如下所示,你可以进一步编辑左右对齐。
-(void)setTextAlignment:(NSTextAlignment)textAlignment
{
if (textAlignment == UITextAlignmentCenter)
{
NSArray *versionComponentsArray = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[versionComponentsArray objectAtIndex:0] intValue] >= 6) {
self.textAlignment = NSTextAlignmentCenter;
} else {
self.textAlignment = UITextAlignmentCenter;
}
}
}
答案 5 :(得分:0)
我不知道iOs4,但是iOs5处理NSTextAlignment就好了,我刚刚更改了我的所有代码并且我的iPad第一代(5.1我认为?)处理得很好。尝试一下,它可能正常工作