Sepertinya UITextAlignmentCentersudah tidak digunakan lagi di iOS 6.
Saya masih menggunakannya dan berfungsi dengan baik, tetapi memberi peringatan.
Bagaimana saya bisa memperbaikinya?
label.textAlignment = UITextAlignmentCenter;
Terima kasih.
Sepertinya UITextAlignmentCentersudah tidak digunakan lagi di iOS 6.
Saya masih menggunakannya dan berfungsi dengan baik, tetapi memberi peringatan.
Bagaimana saya bisa memperbaikinya?
label.textAlignment = UITextAlignmentCenter;
Terima kasih.
Jawaban:
Di iOS6 Anda bisa menggunakan
label.textAlignment = NSTextAlignmentCenter;
Semoga ini membantu.
Perubahan labelAlignmentproperti mungkin terkait dengan pengenalan NSAttributedStrings dari Apple ke lebih banyak kontrol iOS, dan oleh karena itu perlu mengubah properti UIText… menjadi NSText… properti.
Jadi, jika Anda meningkatkan ke iOS6, Anda sedang dalam semanggi; hanya beralih dari UITextAlignmentCenterke NSTextAlignmentCenterdan menikmati string baru yang mewah.
Tetapi jika Anda bekerja dengan proyek yang kompleks dan lebih suka bumi tidak terlalu bergerak, Anda mungkin ingin tetap menggunakan versi yang lebih lama untuk sementara waktu, dan mengadaptasi kode Anda untuk beberapa versi, seperti ini:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
Pendekatan di atas bekerja untuk metode baru ; Anda mendapatkan peringatan tetapi semuanya berjalan dengan baik. Tetapi ketika kompiler melihat konstanta yang tidak diketahuinya, ia berubah merah dan berhenti di jalurnya. Tidak ada cara untuk menyelinap NSTextAlignmentCentermelewatinya. (Yah, mungkin ada cara untuk menyesuaikan perilaku kompiler di sini, tetapi tampaknya tidak disarankan.)
Solusinya adalah menambahkan beberapa definisi preprocessor bersyarat. Jika Anda meletakkan sesuatu seperti ini di file h kelas Anda (atau mungkin dalam file konstanta yang diimpor - yang harus dengan sendirinya disertakan #import <UIKit/UIKit.h>agar pernah tahu tentang NSText ... konstanta) ...
#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
…kamu bisa melakukan ini:
label.textAlignment = kLabelAlignmentCenter;
Dan ini:
label.lineBreakMode = kLabelTruncationMiddle;
Dll
Karena perubahan UIText / NSText ini cenderung muncul untuk beberapa kontrol, pendekatan ini cukup berguna.
(Peringatan: Menjadi anggota pecinta mapan di bumi yang disebutkan di atas, saya telah menguji ini dengan versi lama, tetapi belum dengan iOS6.)
NSTextAlignmentCenterdapat digunakan di tempat UITextAlignmentCenterdan daftar penggantian lainnya di bawah ini:
#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];
Anda tidak harus melakukan keduanya. Xcode 4.5 akan mengkompilasi NSTextAlignmentCenter, dll denda di 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;
Saya memiliki masalah serupa dan menggunakan yang berikut ini: detailsLabel.textAlignment = NSTextAlignmentCenter;
di iOS 6 atau lebih tinggi
gunakan nilai ini:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment.