ดูเหมือนว่าUITextAlignmentCenter
เลิกใช้แล้วใน iOS 6
ฉันยังคงใช้มันและทำงานได้ดี แต่ก็มีคำเตือน
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
label.textAlignment = UITextAlignmentCenter;
ขอบคุณ
ดูเหมือนว่าUITextAlignmentCenter
เลิกใช้แล้วใน iOS 6
ฉันยังคงใช้มันและทำงานได้ดี แต่ก็มีคำเตือน
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
label.textAlignment = UITextAlignmentCenter;
ขอบคุณ
คำตอบ:
ใน iOS6 คุณสามารถใช้
label.textAlignment = NSTextAlignmentCenter;
หวังว่านี่จะช่วยได้
การlabelAlignment
เปลี่ยนแปลงคุณสมบัติอาจเกี่ยวข้องกับการแนะนำ NSAttributedStrings ของ Apple ให้กับตัวควบคุม iOS มากขึ้นดังนั้นจึงจำเป็นต้องเปลี่ยนคุณสมบัติ UIText ... เป็นคุณสมบัติ NSText ...
ดังนั้นหากคุณอัพเกรดเป็น iOS6 คุณจะอยู่ในโคลเวอร์ เพียงสลับจากUITextAlignmentCenter
เป็นNSTextAlignmentCenter
และเพลิดเพลินไปกับสตริงใหม่ที่แปลกใหม่
แต่ถ้าคุณทำงานกับโครงการที่ซับซ้อนและต้องการให้โลกไม่เคลื่อนไหวมากนักคุณอาจต้องการที่จะอยู่กับเวอร์ชั่นที่เก่ากว่าสักพักแล้วปรับรหัสของคุณให้เป็นหลาย ๆ แบบดังนี้:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
วิธีการดังกล่าวข้างต้นทำงานใหม่วิธีการ ; คุณได้รับคำเตือน แต่ทุกอย่างทำงานได้ดี แต่เมื่อคอมไพเลอร์เห็นค่าคงที่ซึ่งไม่รู้ว่ามันเปลี่ยนเป็นสีแดงและหยุดในแทร็กของมัน ไม่มีทางที่จะแอบNSTextAlignmentCenter
ผ่านมันไปได้ (อาจมีวิธีในการปรับแต่งพฤติกรรมของคอมไพเลอร์ที่นี่ แต่ดูเหมือนจะไม่เหมาะสม)
วิธีแก้ปัญหาคือการเพิ่มตัวกำหนดพรีโปรเซสเซอร์ที่มีเงื่อนไข ถ้าคุณใส่อะไรแบบนี้ลงในไฟล์ h ของชั้นเรียน (หรืออาจจะอยู่ในไฟล์ค่าคงที่ที่นำเข้า - ซึ่งต้องรวม#import <UIKit/UIKit.h>
อยู่ด้วยเพื่อที่จะได้รู้เกี่ยวกับค่าคงที่ NSText ... ค่าคงที่) ...
#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
... คุณสามารถทำสิ่งนี้:
label.textAlignment = kLabelAlignmentCenter;
และนี่:
label.lineBreakMode = kLabelTruncationMiddle;
เป็นต้น
เนื่องจากการเปลี่ยนแปลง UIText / NSText เหล่านี้มีแนวโน้มที่จะโผล่ขึ้นมาสำหรับการควบคุมหลายวิธีนี้จึงมีประโยชน์มาก
(Caveat: ในฐานะสมาชิกคนหนึ่งของคู่รักที่มั่นคงในโลกก่อนหน้านี้ฉันได้ทดสอบสิ่งนี้ด้วยเวอร์ชั่นเก่า แต่ยังไม่ได้ใช้กับ iOS6)
NSTextAlignmentCenter
สามารถใช้แทนUITextAlignmentCenter
และรายการของการทดแทนอื่น ๆ อยู่ด้านล่าง:
#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];
คุณไม่ต้องทำอย่างใดอย่างหนึ่ง Xcode 4.5 จะรวบรวมNSTextAlignmentCenter
และอื่น ๆ ปรับใน 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;
ฉันมีปัญหาที่คล้ายกันและใช้สิ่งต่อไปนี้: detailsLabel.textAlignment = NSTextAlignmentCenter;
ใน iOS 6 ขึ้นไป
ใช้ค่านี้:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
สวิฟท์ 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.