Sieht aus als ob UITextAlignmentCenter
in iOS 6 veraltet zu sein.
Ich benutze es immer noch und funktioniert gut, aber es gibt eine Warnung.
Wie kann ich das beheben?
label.textAlignment = UITextAlignmentCenter;
Vielen Dank.
Sieht aus als ob UITextAlignmentCenter
in iOS 6 veraltet zu sein.
Ich benutze es immer noch und funktioniert gut, aber es gibt eine Warnung.
Wie kann ich das beheben?
label.textAlignment = UITextAlignmentCenter;
Vielen Dank.
Antworten:
In iOS6 können Sie verwenden
label.textAlignment = NSTextAlignmentCenter;
Hoffe das hilft.
Die labelAlignment
Eigenschaftsänderung hängt wahrscheinlich damit zusammen, dass Apple NSAttributedStrings in mehr iOS-Steuerelementen einführt und daher die UIText… -Eigenschaften in NSText… -Eigenschaften ändern muss.
Wenn Sie also auf iOS6 aktualisiert haben, sind Sie in Klee; Wechseln Sie einfach von UITextAlignmentCenter
zu NSTextAlignmentCenter
und genießen Sie die schicken neuen Saiten.
Wenn Sie jedoch mit einem komplexen Projekt arbeiten und es vorziehen, dass sich die Erde nicht so stark unter Ihren Füßen bewegt, möchten Sie möglicherweise eine Weile bei einer älteren Version bleiben und Ihren Code für mehrere Versionen anpassen.
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
Der obige Ansatz funktioniert für neue Methoden ; Sie erhalten Warnungen, aber alles läuft gut. Wenn der Compiler jedoch eine Konstante sieht , von der er nichts weiß, wird er rot und bleibt in seinen Spuren stehen. Es gibt keine Möglichkeit, sich daran NSTextAlignmentCenter
vorbei zu schleichen . (Nun, es könnte eine Möglichkeit geben, das Verhalten des Compilers hier anzupassen, aber es scheint nicht ratsam.)
Die Problemumgehung besteht darin, einige bedingte Präprozessordefinitionen hinzuzufügen. Wenn Sie so etwas in die h-Datei Ihrer Klasse #import <UIKit/UIKit.h>
einfügen (oder vielleicht in eine importierte Konstantendatei - die selbst enthalten muss, um jemals etwas über die NSText ... -Konstanten zu erfahren)…
#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
…du kannst das:
label.textAlignment = kLabelAlignmentCenter;
Und das:
label.lineBreakMode = kLabelTruncationMiddle;
Etc.
Da diese UIText / NSText-Änderungen wahrscheinlich für mehrere Steuerelemente auftreten, ist dieser Ansatz recht praktisch.
(Vorsichtsmaßnahme: Als Mitglied der oben genannten Liebhaber von Steady Earth habe ich dies mit einer alten Version getestet, aber noch nicht mit iOS6.)
NSTextAlignmentCenter
kann anstelle von verwendet werden UITextAlignmentCenter
und eine Liste anderer Ersetzungen ist unten:
#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];
Sie müssen beides nicht tun. Xcode 4.5 kompiliert das NSTextAlignmentCenter
usw. in 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;
Ich hatte ein ähnliches Problem und verwendete Folgendes: detailsLabel.textAlignment = NSTextAlignmentCenter;
in iOS 6 oder höher
Verwenden Sie diesen Wert:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.