IT

iOS 6의 레이블 정렬 - UI 텍스트 정렬 사용 안 함

itgroup 2023. 6. 12. 21:18
반응형

iOS 6의 레이블 정렬 - UI 텍스트 정렬 사용 안 함

처럼 보입니다.UITextAlignmentCenteriOS 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는 다음을 컴파일합니다.NSTextAlignmentCenteriOS 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

반응형