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 labelAlignmentEigenschaftsä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 UITextAlignmentCenterzu NSTextAlignmentCenterund 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 NSTextAlignmentCentervorbei 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.)
NSTextAlignmentCenterkann anstelle von verwendet werden UITextAlignmentCenterund 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 NSTextAlignmentCenterusw. 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.