[ios] UIButton에 여러 줄 텍스트를 어떻게 추가합니까?

다음 코드가 있습니다 …

UILabel *buttonLabel = [[UILabel alloc] initWithFrame:targetButton.bounds];
buttonLabel.text = @"Long text string";
[targetButton addSubview:buttonLabel];
[targetButton bringSubviewToFront:buttonLabel];

… 버튼에 여러 줄 텍스트를 가질 수 있지만 UIButton의 backgroundImage에 의해 텍스트가 항상 가려집니다. 버튼의 하위 뷰를 표시하기위한 로깅 호출은 UILabel이 추가되었지만 텍스트 자체는 볼 수 없음을 나타냅니다. 이것은 UIButton의 버그입니까, 아니면 내가 잘못하고 있습니까?



답변

iOS 6 이상의 경우 다음을 사용하여 여러 줄을 허용하십시오.

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
// you probably want to center it
button.titleLabel.textAlignment = NSTextAlignmentCenter; // if you want to 
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

iOS 5 이하의 경우 다음을 사용하여 여러 줄을 허용하십시오.

button.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
// you probably want to center it
button.titleLabel.textAlignment = UITextAlignmentCenter;
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

2017 년 iOS9 에서는

일반적으로 다음 두 가지를 수행하십시오.

  1. “특성 텍스트”를 선택하십시오
  2. “줄 바꿈”팝업에서 “워드 랩”을 선택하십시오.

답변

선택한 답변은 정확하지만 Interface Builder에서 이러한 종류의 작업을 선호하는 경우 다음을 수행 할 수 있습니다.

그림


답변

제목이 여러 줄 중앙에있는 단추를 추가하려면 단추에 대한 인터페이스 빌더 설정을 설정하십시오.

[ 여기]


답변

iOS 6의 경우 :

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;

같이

UILineBreakModeWordWrap and UITextAlignmentCenter

IOS 6부터는 더 이상 사용되지 않습니다.


답변

Roger Nolan의 제안을 다시 말하지만 명시 적 코드를 사용하는 것이 일반적인 해결책입니다.

button.titleLabel?.numberOfLines = 0


답변

스위프트 3

button.titleLabel?.lineBreakMode = .byWordWrapping
button.titleLabel?.textAlignment = .center
button.setTitle("Button\nTitle",for: .normal)


답변

Xcode 9.3에서는 아래와 같은 스토리 보드 를 사용하여이를 수행 할 수 있습니다.

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

버튼 제목 textAlignment를 가운데로 설정해야합니다.

button.titleLabel?.textAlignment = .center

아래와 같이 새 줄 (\ n)로 제목 텍스트를 설정할 필요는 없습니다.

button.setTitle("Good\nAnswer",for: .normal)

제목 만 설정하면

button.setTitle("Good Answer",for: .normal)

결과는 다음과 같습니다.

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