Кажется, что UITextAlignmentCenter
устарел в iOS 6.
Я все еще использую его и хорошо работаю, но он дает предупреждение.
Как я могу это исправить?
label.textAlignment = UITextAlignmentCenter;
Спасибо.
Кажется, что UITextAlignmentCenter
устарел в iOS 6.
Я все еще использую его и хорошо работаю, но он дает предупреждение.
Как я могу это исправить?
label.textAlignment = UITextAlignmentCenter;
Спасибо.
В iOS6 вы можете использовать
label.textAlignment = NSTextAlignmentCenter;
Надеюсь, что это поможет.
Изменение свойства labelAlignment
, вероятно, связано с тем, что Apples вводит NSAttributedStrings в большее количество элементов управления iOS и поэтому необходимо изменить свойства UIText... на свойства NSText....
Итак, если вы обновлены до iOS6, youre в clover; просто переключитесь с UITextAlignmentCenter
на NSTextAlignmentCenter
и наслаждайтесь фантастическими новыми строками.
Но если вы работаете со сложным проектом и предпочтете, чтобы земля не двигалась так сильно под ногами, вы можете захотеть придерживаться старой версии на некоторое время и адаптировать свой код для нескольких версий, примерно так:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
Вышеупомянутый подход работает для новых методов; вы получаете предупреждения, но все работает нормально. Но когда компилятор видит константу, о которой она не знает, она становится красной и останавливается на своих дорожках. Theres никоим образом не прокрасться 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;
Etc.
Поскольку эти изменения 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];
labelName.textAlignment=NSTextAlignmentLeft;
У меня была аналогичная проблема и я использовал следующее: detailsLabel.textAlignment = NSTextAlignmentCenter;
в iOS 6 или выше
используйте это значение:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center