iOS 6의 레이블 정렬 - UI 텍스트 정렬 사용 안 함
처럼 보입니다.UITextAlignmentCenter
iOS 6에서는 더 이상 사용되지 않습니다.
지금도 사용하고 잘 작동하는데 경고가 나옵니다.
이걸 어떻게 고칠 수 있을까요?
label.textAlignment = UITextAlignmentCenter;
감사해요.
iOS6에서 사용할 수 있습니다.
label.textAlignment = NSTextAlignmentCenter;
그labelAlignment
속성 변경은 Apple이 더 많은 iOS 컨트롤에 NSA 속성 문자열을 도입한 것과 관련이 있을 수 있으므로 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>
NST 텍스트에 대해 알기 위해서는...상수)…
#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 변경사항은 여러 컨트롤에 대해 나타날 가능성이 높기 때문에 이 방법은 매우 유용합니다.
(동굴:앞서 언급한 스테디어스 애호가들의 일원으로서, 저는 이것을 오래된 버전으로 테스트했지만, 아직 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
Swift 5+의 경우:
yourLabel.textAlignment = .center
설정할 수 있는 위치:
public enum NSTextAlignment : Int {
case left = 0 // Visually left aligned
case center = 1 // Visually centered
case right = 2 // Visually right aligned
case justified = 3 // Fully-justified. The last line in a paragraph is natural-aligned.
case natural = 4 // Indicates the default alignment for script
}
언급URL : https://stackoverflow.com/questions/11920321/label-alignment-in-ios-6-uitextalignment-deprecated
'IT' 카테고리의 다른 글
VBA를 사용하여 Excel에서 용해/재형성? (0) | 2023.06.12 |
---|---|
Oracle REPLACE() 함수가 캐리지 리턴 및 라인 피드를 처리하지 않습니다. (0) | 2023.06.12 |
NSDateFormatter 로케일 "기능"을 처리하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.12 |
데이터에 추가한 후 Vue에서 PK를 렌더링하지 않음 (0) | 2023.06.12 |
휠 파일 설치 (0) | 2023.06.12 |