UITextAlignmentCenter
iOS 6에서 더 이상 사용되지 않는 것 같습니다 .
나는 여전히 그것을 사용하고 잘 작동하지만 경고를줍니다.
이 문제를 어떻게 해결할 수 있습니까?
label.textAlignment = UITextAlignmentCenter;
감사.
답변
iOS6에서는
label.textAlignment = NSTextAlignmentCenter;
도움이 되었기를 바랍니다.
답변
labelAlignment
속성 변경은 아마 아이폰 OS 컨트롤의 이상으로 애플의 도입 NSAttributedStrings 관련, 따라서 … NSText에 … 속성을 UIText을 변경하는 속성을 필요로한다.
따라서 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 변경 사항이 여러 컨트롤에 팝업 될 가능성이 높으므로이 방법은 매우 유용합니다.
(주의 사항 : 앞서 언급 한 꾸준한 지구 애호가의 일원이므로 이전 버전으로 테스트했지만 아직 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;