UIButton의 텍스트 정렬 센터를 만드는 방법은 무엇입니까? IB 사용


140

IB를 중심으로 사용하여 UIButton의 제목을 설정할 수 없습니다. 내 제목은 여러 줄입니다.
이렇게해서
여기에 이미지 설명을 입력하십시오

하지만 난 이걸 좋아해
여기에 이미지 설명을 입력하십시오

나는 이것에 공간을 주었지만 그렇게하고 싶지 않습니다. 어떤 경우에는 정확하게 정렬되지 않고 정렬을 설정하는 UILabel 속성이 있지만 그 코드를 작성하고 싶지 않습니다. IB에서 모든 것을 설정하고 싶습니다.

감사


7
Kumar Rathor-코드로 시도self.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Sagar R. Kothari

1
@ 스파크 코드 로이 작업을 수행하는 방법을 알고 있지만 원하는 것은 'IB'를 사용하여 설정하는 것입니다.
쿠마르 라 토르 Inder Kumar Rathore

IB를 사용하여 설정하고 싶습니다. 그러나 이러한 속성은 코드를 통해서만 액세스 할 수 있습니다.
Sagar R. Kothari

IB를 통해 액세스 할 수 있지만 누가 관심을 가져야합니까!
Youssef Moawad

@YoussefSami의 예 당신이 맞아요 stackoverflow.com/a/5865500/468724
인더 쿠마르 라 토레

답변:


197

이것은 정확히 당신이 기대했던 것을 만들 것입니다 :

목표 -C :

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

iOS 6 이상의 경우

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

tyler53의 답변에 설명 된 대로

빠른:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

스위프트 4.x 이상

myButton.titleLabel?.textAlignment = .center

1
이후 버전의 iOS에서는 NSTextAlignment가되었습니다.
설리번

4
그 코드는 작동하지 않습니다, 가장 좋은 대답은 @joetjah입니다myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Alberto Mier

8
이 질문 은 Interface Builder 에서와 같이 IB를 명시 적으로 언급합니다 . 코딩이 필요하기 때문에 정답 이 아닙니다 .
SwiftArchitect

1
스위프트 4 : myButton.titleLabel? .textAlignment = .center
Lewis Black

'센터'의 이름이 '센터'로 변경되었습니다
ModusPwnens

106

라인을 사용하십시오 :

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

내용을 가로로 배치해야합니다.

레이블 내부의 텍스트를 가운데로 설정하려면 다음을 사용하십시오.

[labelOne setTextAlignment:UITextAlignmentCenter];

IB를 사용하려면 XCode 4에 링크 된 작은 예제가 있지만 세부 정보를 충분히 제공해야합니다 (또한 속성 화면 위에 속성 탭이 표시됩니다. XCode에서 동일한 탭을 찾을 수 있습니다) 3.x) : 여기에 이미지 설명을 입력하십시오


1
고마워 ...하지만 IB를 통해 설정하고 싶지 않습니다. :( 그것의 마지막 옵션입니다 ...
Kumar Rathore Inder

1
@Inder Kumar Rathore : 문제 없습니다. IB에서 설정하려면 레이블을 클릭 한 다음 속성 관리자에서 정렬을 "중앙"으로 설정해야합니다. 내 IB (XCode 4)에는 텍스트 정렬을 나타내는 3 개의 아이콘이 있습니다. 분명히, 당신은 중간을 선택해야합니다.
Joetjah

스크린 샷을 보내 주시겠습니까?이 버튼의 레이블입니까 아니면 라이브러리에서 UILabel을 드래그 했습니까 ??? UILabel이 버튼의 레이블이 아니라고 가정합니다.
Inder Kumar Rathore

@Inder Kumar Rathore : 안녕하세요, 추가 한 스크린 샷을 확인하십시오. 실제로 사용하는 레이블 종류를 잘못 생각했지만 여전히 UIButton의 텍스트 대신 UILabel을 생각하고있었습니다. 스크린 샷은 IB를 통해 UIButton에 정렬하는 방법을 보여줍니다.
Joetjah

1
편집 할 수 없지만 NSTextAlignmentCenter가 UITextAlignmentCenter를 대신했습니다. 그것들은 똑같은 것을 의미합니다. developer.apple.com/library/iOS/documentation/UIKit/Reference/…
OC Rickard

90

해결책 1

스토리 보드에서 키 경로를 설정할 수 있습니다

텍스트를 여러 줄 제목으로 설정하십시오 (예 : hello + multiline

텍스트를 다음 줄로 이동 하려면 + 를 눌러야 합니다.

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

그런 다음 키 경로를 추가하십시오.

titleLabel.textAlignment같은 Number가치 1, 1수단 NSTextAlignmentCenter
titleLabel.numberOfLines등의 Number가치는 0, 0라인의 수를 의미

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

이것은 IB / Xcode에는 반영되지 않지만 런타임 (장치 / 시뮬레이터) 중앙에 있습니다.

Xcode의 변경 사항을 보려면 다음을 수행해야합니다. (이 단계를 건너 뛸 수 있음을 기억하십시오)

  1. 버튼을 디자인 할 수 있도록 UIButton을 서브 클래 싱하십시오.

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    

  2. 이 디자인 가능한 서브 클래스를 수정중인 버튼에 할당하십시오.

Interface Builder를 사용하여 버튼의 클래스를 변경하는 방법 표시

  1. 올바르게 설정하면 Designables 상태가 "최신"(몇 초가 걸릴 수 있음) 일 때 IB의 시각적 업데이트가 표시됩니다.

Interface Builder의 디자인 가능 및 기본 버튼 비교



솔루션 2

코드를 작성하려면 긴 프로세스를 수행하십시오.

1. IBOutlet버튼 2를
만듭니다. viewDidLoad에서 코드 작성

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0


솔루션 3

엑스 코드의 최신 버전에서 우리는 특성에 기인 제목이 (광산은 엑스 코드 6.1)
을 선택 Attributed후 아래의 텍스트 및 프레스 센터 옵션을 선택합니다

추신 : 텍스트가 여러 줄로 나오지 않아서

btn.titleLabel.numberOfLines = 0

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


해결책 3의 경우, 그냥 추가 Line Breaking = Clip하면 텍스트가
여러 줄로 바뀝니다.

솔루션 3은 적어도 Xcode 11.3.1에서 문제가 있습니다. 버튼의 제목을 변경하면 작동하지 않습니다. 내가 사용할 때 btn.titleLabel.textAlignment훌륭하게 작동합니다.
브라이언 홍

27

UIButton의 경우 다음을 사용해야합니다.

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];


13

현재 iOS 6 이상을 사용하는 사용자의 경우 UITextAlignmentCenter가 더 이상 사용되지 않습니다. 이제 NSTextAlignmentCenter입니다.

예 : mylabel.textAlignment = NSTextAlignmentCenter;완벽하게 작동합니다.


12

스위프트 4, xcode 9

myButton.contentHorizontalAlignment = .center

myButton.titleLabel? .numberOfLines = 0으로 설정하면 버튼 내부의 레이블이 중앙에 오게되어 버튼 내에서 텍스트를 왼쪽에 정렬하는 방법을 알아 내려고했지만 이것이 .left로 설정되었습니다.
maxcodes 2019

7

btn이 UIButton을 참조한다고 가정하면 여러 줄 캡션이 가로로 가운데에 오도록 변경하려면 iOS 6 이상에서 다음 명령문을 사용할 수 있습니다.

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter iOS6에서 더 이상 사용되지 않습니다.

대신이 코드를 사용할 수 있습니다.

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


UIButton 수신자 수신자 textAlignment에 대한 속성이 없습니다.
Ravi

아이폰 OS에있는 UIButton에 대한 이러한 속성은 없다
Jayprakash Dubey

그는 button.titleLabel.textAlignment 의미
OC 리 카드


4

스위프트 4의 경우 :

@IBAction func myButton(sender: AnyObject) {
    sender.titleLabel?.textAlignment = NSTextAlignment.center
    sender.setTitle("Some centered String", for:UIControlState.normal)
}

"?"하나를 사용하십시오 sender.titleLabel에서? 대신 "??"
Владимир Ковальчук

3

실제로 인터페이스 빌더에서 할 수 있습니다.

제목을 "속성"으로 설정 한 다음 가운데 정렬을 선택해야합니다.


그 결과 스토리 보드를 통해 텍스트 색상, 글꼴 등을 설정할 수 없습니다.
Vineesh TP

3

다음과 같이 시도하십시오 :

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

2

스토리 보드에서이 작업을 수행 할 수 있습니다. 버튼을 선택하십시오. 줄 바꿈 'Word Wrap'을 설정하고 제목 'Plain'을 'Attributed'로 설정하십시오. '중심 정렬'을 선택하십시오. 이 부분은 중요합니다 => 클릭 ... (더보기) 버튼. 그리고 줄 바꿈 모드를 '문자 줄 바꿈'으로 선택하십시오.


1

UIButton은 setTextAlignment를 지원하지 않습니다. 따라서 버튼 텍스트 정렬을 위해서는 setContentHorizontalAlignment를 사용해야합니다.

당신의 참고를 위해

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.