[ios] UILabel에 줄 바꿈을 추가하는 방법?

다음과 같은 문자열이 있는지 확인하십시오.

NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";  

UILabel이 다음과 같은 메시지를 표시하도록하려면 어떻게해야합니까

AAAAA
BBBBB
CCCCC

\nUILabel에 의해 인식 되지 않는다고 생각 하므로 UILabel이 줄 바꿈을 만들어야한다는 것을 알 수 있도록 NSString에 넣을 수있는 것이 있습니까?



답변

\n문자열에서 사용하는 대로 사용하십시오 .

여러 줄을 허용하려면 numberOfLines를 0으로 설정하십시오.

label.numberOfLines = 0;

를 사용하여 텍스트의 크기와 일치하도록 레이블 프레임을 업데이트하십시오 sizeWithFont:. 이 작업을 수행하지 않으면 텍스트가 세로 중앙에 잘 리거나 잘립니다.

UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
                          constrainedToSize:label.frame.size
                              lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);

업데이트 : 더 이상 사용되지 않는 교체품

sizeWithFont:constrainedToSize:lineBreakMode:

더 이상 사용되지 않는 sizeWithFont에 대한 참조, iOS 7에서?

CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];

label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);


답변

여기에 이미지 설명을 입력하십시오

Interface Builder의 작은 상자에 입력 할 때 옵션 반환을 사용하여 줄 바꿈 (\ n)을 삽입하십시오. 인터페이스 빌더의 레이블 속성에서 # Lines = 0을 설정하십시오.

레이블을 선택한 다음 위 이미지에서와 같이 줄 속성을 0으로 변경 한 다음 줄 바꿈을 위해 문자열에 \ n을 사용하십시오.


답변

XML 파일에서 문자열을 읽으면이 문자열의 줄 바꿈 \nUILabel텍스트 에서 작동하지 않습니다 . 은 \n줄 바꿈으로 해석되지 않습니다.

이 문제를 해결하기위한 약간의 요령은 다음과 같습니다.

// correct next line \n in string from XML file
NSString *myNewLineStr = @"\n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"\\n" withString:myNewLineStr];

myLabel.text = myLabelText;

따라서 \n문자열의 구문 분석되지 않은 부분을 \n하드 코딩 된 구문 분석 된 구문 으로 대체 해야합니다 NSString.

다른 라벨 설정은 다음과 같습니다.

myLabel.numberOfLines = 0;
myLabel.backgroundColor = [UIColor lightGrayColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentCenter;

가장 중요한 것은 (= 라벨에 무제한 줄 수 )로 설정 numberOfLines하는 것 0입니다.

Apple이 \nXML에서 읽은 문자열을 구문 분석하지 않기로 선택한 이유 를 모르십니까?

도움이 되었기를 바랍니다.


답변

인터페이스 빌더에서 Ctrl+ Enter를 사용 하여 /n원하는 위치 에 삽입 할 수 있습니다 . 이 방법은 다음 상황을 구현할 수 있습니다

aaa
aaaaaaa


답변

numberOfLines속성 을 설정해야 합니다 UILabel. 기본값은 1 이며 0으로 설정하면 모든 제한이 제거됩니다.


답변

중요 그것의주의하기 \n보다는 (백 슬래시) /n.


답변

Swift 2.2에서> iOS 8

Storyboard의 Attribute Inspector 아래에서 Lines = 0을 설정하고 참조 콘센트를 레이블에 연결했습니다. 그런 다음 컨트롤러에서 다음과 같이 사용하십시오.

 @IBOutlet weak var listLabel: UILabel!

 override func viewDidLoad() {
      ...
      listLabel.text = "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8"
 }