Похоже, UITextAlignmentCenter
не рекомендуется в iOS 6.
Я все еще использую это и работает хорошо, но это дает предупреждение.
Как я могу это исправить?
label.textAlignment = UITextAlignmentCenter;
Спасибо.
Похоже, UITextAlignmentCenter
не рекомендуется в iOS 6.
Я все еще использую это и работает хорошо, но это дает предупреждение.
Как я могу это исправить?
label.textAlignment = UITextAlignmentCenter;
Спасибо.
Ответы:
В iOS6 вы можете использовать
label.textAlignment = NSTextAlignmentCenter;
Надеюсь это поможет.
Изменение 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.)
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;
Свифт 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.