Görünüşe göre UITextAlignmentCenter
iOS 6'da kullanımdan kaldırıldı.
Hala kullanıyorum ve iyi çalışıyor, ancak bir uyarı veriyor.
Bunu nasıl düzeltebilirim?
label.textAlignment = UITextAlignmentCenter;
Teşekkürler.
Görünüşe göre UITextAlignmentCenter
iOS 6'da kullanımdan kaldırıldı.
Hala kullanıyorum ve iyi çalışıyor, ancak bir uyarı veriyor.
Bunu nasıl düzeltebilirim?
label.textAlignment = UITextAlignmentCenter;
Teşekkürler.
Yanıtlar:
İOS6'da şunları kullanabilirsiniz:
label.textAlignment = NSTextAlignmentCenter;
Bu yardımcı olur umarım.
labelAlignment
Mülkiyet değişikliği muhtemelen iOS kontrollerin daha Apple'ın tanıtan NSAttributedStrings ilgili ve bu nedenle ... NSText için ... özelliklerini UIText değiştirmeye özelliklerini ihtiyacı olduğunu.
Dolayısıyla, iOS6'ya geçtiyseniz, yoncatasınız; sadece yeni dizeleri UITextAlignmentCenter
değiştirin NSTextAlignmentCenter
ve keyfini çıkarın.
Ancak karmaşık bir proje ile çalışıyorsanız ve dünyanın ayaklarınızın altında çok fazla hareket etmemesini tercih ediyorsanız, bir süre daha eski bir sürüme sadık kalmak ve kodunuzu birden fazla sürüm için uyarlamak isteyebilirsiniz, örneğin:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
Yukarıdaki yaklaşım yeni yöntemler için işe yarar ; uyarılar alıyorsunuz ama her şey yolunda gidiyor. Ancak derleyici bilmediği bir sabit gördüğü zaman kırmızıya döner ve izlerinde durur. Gizlice geçmenin yolu yok NSTextAlignmentCenter
. (Derleyicinin davranışını burada özelleştirmenin bir yolu olabilir, ancak bu tavsiye edilemez gibi görünüyor.)
Çözüm, bazı koşullu önişlemci tanımları eklemektir. Sınıfınızın h dosyasına (veya belki de #import <UIKit/UIKit.h>
NSText ... sabitleri hakkında bilgi sahibi olmak için kendisini içermesi gereken - içe aktarılan sabitler dosyasına ) böyle bir şey koyarsanız…
#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
…Bunu yapabilirsiniz:
label.textAlignment = kLabelAlignmentCenter;
Ve bu:
label.lineBreakMode = kLabelTruncationMiddle;
Vb.
Bu UIText / NSText değişikliklerinin birden fazla kontrol için ortaya çıkması muhtemel olduğundan, bu yaklaşım oldukça kullanışlıdır.
(Uyarı: Yukarıda adı geçen sabit toprak severlerin bir üyesi olarak, bunu eski bir sürümle test ettim, ancak henüz iOS6 ile değil.)
NSTextAlignmentCenter
yerine kullanılabilir UITextAlignmentCenter
ve diğer değiştirmelerin listesi aşağıdadır:
#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];
Bunların hiçbirini yapmak zorunda değilsiniz. Xcode 4.5, NSTextAlignmentCenter
iOS 5'te vb.
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;
Benzer bir sorun vardı ve aşağıdaki kullanılır: detailsLabel.textAlignment = NSTextAlignmentCenter;
iOS 6 veya üstü sürümlerde
bu değeri kullan:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Hızlı 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.