Có vẻ như UITextAlignmentCenter
không được dùng trong iOS 6.
Tôi vẫn sử dụng nó và hoạt động tốt, nhưng nó đưa ra một cảnh báo.
Làm thế nào tôi có thể sửa lỗi này?
label.textAlignment = UITextAlignmentCenter;
Cảm ơn.
Có vẻ như UITextAlignmentCenter
không được dùng trong iOS 6.
Tôi vẫn sử dụng nó và hoạt động tốt, nhưng nó đưa ra một cảnh báo.
Làm thế nào tôi có thể sửa lỗi này?
label.textAlignment = UITextAlignmentCenter;
Cảm ơn.
Câu trả lời:
Trong iOS6, bạn có thể sử dụng
label.textAlignment = NSTextAlignmentCenter;
Hi vọng điêu nay co ich.
Các labelAlignment
thay đổi sở hữu có lẽ liên quan đến NSAttributedStrings giới thiệu của Apple để thêm các điều khiển iOS, và do đó cần phải thay đổi UIText ... tính để NSText ... tài sản.
Vì vậy, nếu bạn đã nâng cấp lên iOS6, bạn đang ở trong cỏ ba lá; chỉ cần chuyển từ UITextAlignmentCenter
sang NSTextAlignmentCenter
và tận hưởng các chuỗi mới lạ mắt.
Nhưng nếu bạn đang làm việc với một dự án phức tạp và muốn trái đất không di chuyển quá nhiều dưới chân bạn, bạn có thể muốn gắn bó với một phiên bản cũ hơn trong một thời gian và điều chỉnh mã của bạn cho nhiều phiên bản, như thế này:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
Cách tiếp cận trên hoạt động cho các phương pháp mới ; bạn nhận được cảnh báo nhưng mọi thứ đều chạy tốt Nhưng khi trình biên dịch nhìn thấy một hằng số mà nó không biết, nó sẽ chuyển sang màu đỏ và dừng lại trong các rãnh của nó. Không có cách nào để lén NSTextAlignmentCenter
qua nó. (Chà, có thể có một cách để tùy chỉnh hành vi của người biên dịch ở đây, nhưng dường như không thể xem được.)
Cách giải quyết là thêm một số định nghĩa tiền xử lý có điều kiện. Nếu bạn đặt một cái gì đó như thế này trong tệp h của lớp bạn (hoặc có lẽ trong tệp hằng được nhập - phải bao gồm #import <UIKit/UIKit.h>
để biết về NSText ... hằng số)
#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
…bạn có thể làm được việc này:
label.textAlignment = kLabelAlignmentCenter;
Và điều này:
label.lineBreakMode = kLabelTruncationMiddle;
Vân vân.
Vì những thay đổi UIText / NSText này có thể sẽ xuất hiện cho nhiều điều khiển, nên cách tiếp cận này khá tiện dụng.
(Hãy cẩn thận: Là một thành viên của những người yêu thích trái đất ổn định đã nói ở trên, tôi đã thử nghiệm điều này với một phiên bản cũ, nhưng chưa có trên iOS6.)
NSTextAlignmentCenter
có thể được sử dụng thay thế UITextAlignmentCenter
và một danh sách các thay thế khác bên dưới:
#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];
Bạn không phải làm một trong những điều này. Xcode 4.5 sẽ biên dịch NSTextAlignmentCenter
, v.v. tốt trong 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;
Tôi đã có một vấn đề tương tự và đã sử dụng như sau: chi tiếtLabel.textAlocation = NSTextAlocateCenter;
trong iOS 6 trở lên
sử dụng giá trị này:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.