Подтвердить что ты не робот

Выравнивание меток в iOS 6 - UITextAlignment устарела

Кажется, что UITextAlignmentCenter устарел в iOS 6.

Я все еще использую его и хорошо работаю, но он дает предупреждение.

Как я могу это исправить?

label.textAlignment = UITextAlignmentCenter;

Спасибо.

4b9b3361

Ответ 1

В iOS6 вы можете использовать

label.textAlignment = NSTextAlignmentCenter;

Надеюсь, что это поможет.

Ответ 2

Изменение свойства 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.)

Ответ 3

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

Ответ 4

#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];

Ответ 5

Вам не нужно делать ни того, ни другого. Xcode 4.5 скомпилирует NSTextAlignmentCenter и т.д. В iOS 5.

Ответ 6

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];

Ответ 7

labelName.textAlignment=NSTextAlignmentLeft;

Ответ 8

У меня была аналогичная проблема и я использовал следующее: detailsLabel.textAlignment = NSTextAlignmentCenter;

Ответ 9

в iOS 6 или выше

используйте это значение:

self.lbl_age.textAlignment=NSTextAlignmentCenter;

Ответ 10

Swift 3:

label.textAlignment = NSTextAlignment.center