ios - wird - iphone erinnerungen werden nicht angezeigt




Labelausrichtung in iOS 6-UITextAlignment nicht weiter unterstützt (7)

Die labelAlignment Eigenschaft labelAlignment hängt wahrscheinlich damit zusammen, dass Apple NSAttributedStrings für mehrere iOS-Steuerelemente einführt und daher die Eigenschaften von UIText ... in NSText ... ändern muss.

Wenn Sie also auf iOS6 aktualisiert haben, sind Sie in Kleeblatt; UITextAlignmentCenter NSTextAlignmentCenter einfach von UITextAlignmentCenter zu NSTextAlignmentCenter und genießen Sie die ausgefallenen neuen Strings.

Aber wenn du mit einem komplexen Projekt arbeitest und es vorziehen würdest, dass sich die Erde nicht so sehr unter deinen Füßen bewegt, solltest du vielleicht für eine Weile bei einer älteren Version bleiben und deinen Code für mehrere Versionen anpassen, etwa so:

// 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. Aber wenn der Compiler eine Konstante sieht, die er nicht kennt, wird er rot und stoppt in seinen Spuren. Es gibt keine Möglichkeit, NSTextAlignmentCenter 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> (oder vielleicht in eine importierte Konstanten-Datei - die selbst #import <UIKit/UIKit.h> muss, um die Konstanten von NSText ... kennenzulernen) ...

#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 angezeigt werden, ist dieser Ansatz ziemlich praktisch.

(Vorbehalt: Als Mitglied der oben genannten Steady-Earth-Liebhaber habe ich das mit einer alten Version getestet, aber noch nicht mit iOS6.)

UITextAlignmentCenter als ob UITextAlignmentCenter in iOS 6 veraltet ist.

Ich benutze es immer noch und arbeite gut, aber es gibt eine Warnung.

Wie kann ich das beheben?

label.textAlignment = UITextAlignmentCenter;

Vielen Dank.


Ich hatte ein ähnliches Problem und verwendete folgendes: detailsLabel.textAlignment = NSTextAlignmentCenter;


Schnell 3:

label.textAlignment = NSTextAlignment.center

Sie müssen keines von beiden tun. Xcode 4.5 kompiliert das NSTextAlignmentCenter , etc. in iOS 5.


NSTextAlignmentCenter kann anstelle von UITextAlignmentCenter und eine Liste anderer Ersetzungen finden Sie 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];

labelName.textAlignment=NSTextAlignmentLeft;




label