UIButton의 제목을 왼쪽 맞춤으로 설정하는 방법은 무엇입니까?


472

의 왼쪽에서 이메일 주소를 표시해야 UIButton하지만 중앙에 있습니다.

정렬을 UIButton? 의 왼쪽에 설정하는 방법이 있습니까?

이것은 내 현재 코드입니다.

UIButton* emailBtn = [[UIButton alloc] initWithFrame:CGRectMake(5,30,250,height+15)];
emailBtn.backgroundColor = [UIColor clearColor];
[emailBtn setTitle:obj2.customerEmail forState:UIControlStateNormal];
emailBtn.titleLabel.font = [UIFont systemFontOfSize:12.5];
[emailBtn setTitleColor:[[[UIColor alloc]initWithRed:0.121 green:0.472 blue:0.823 alpha:1]autorelease] forState:UIControlStateNormal];
[emailBtn addTarget:self action:@selector(emailAction:) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:emailBtn];
[emailBtn release];

답변:


1567

contentHorizontalAlignment를 설정하십시오.

emailBtn.contentHorizontalAlignment = .left;

삽입 된 왼쪽 내용을 조정하려는 경우 텍스트가 왼쪽 테두리에 닿을 수 있습니다.

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);

44
Interface Builder에서이 두 속성을 모두 설정할 수도 있습니다.
Mihai Damian 2013

1
그래서 그것은 나로부터 9000 번이었습니다. 고맙습니다. 유용한 답변
Logic

6
문서를 검색하기에는 너무 게으르다. 그렇게하지 않고 우리는 무엇을 할 것입니까!
Kedar Paranjape

3
SO가 Apple 문서보다 더 잘 문서화되어 있음을 보여줍니다.
GeneCode

1
UIControlContentHorizontalAlignmentLeading그리고 UIControlContentHorizontalAlignmentTrailingiOS 11에 추가되었습니다
Cal Stephens

118

코드에서 조정하지 않으려는 경우 인터페이스 빌더를 사용할 수도 있습니다. 여기에 텍스트를 정렬하고 일부를 들여 쓰기했습니다.

IB의 UIButton

버튼으로 이미지를 정렬 할 수도 있습니다. :

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


이것은 나에게 많은 도움을 주었다. 나는 그것이 그 컨트롤이 무엇인지 깨닫지 못했다.
Ethan Parker

고마워, 그것은 나를 도왔다. 샘플 사진에서 화살표 표시를 사용하지 않고 버튼 제목에 대한 모서리 삽입을 찾을 수 없었습니다.
Ashok

xcode 8.2.1에서 다른 곳으로 옮겼습니다. 아래 답변을 참조하십시오
dang

프로그래밍 방식으로 신속하게 수행하는 방법은 무엇입니까? 오른쪽에 이미지를 맞추고 왼쪽에 제목을 원하십니까 ???
Visal Sambo

36

스위프트 3 이상에서 :

button.contentHorizontalAlignment = .left

13
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

13

스위프트 4+

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

9

버튼 내부의 전체 내용 위치를 변경하지 않으려는 경우 emailBtn.titleEdgeInsets보다 사용하는 것이 좋습니다 contentEdgeInsets.



7

인터페이스 빌더의 xcode 8.2.1에서는 다음으로 이동합니다.여기에 이미지 설명을 입력하십시오


5

@DyingCactus 코드에 작은 오류가 있습니다. 다음은 UILabel을 UIButton에 추가하여 단추 텍스트를 정렬하여 단추 '제목'을 더 잘 제어하는 ​​올바른 솔루션입니다.

NSString *myLabelText = @"Hello World";
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

// position in the parent view and set the size of the button
myButton.frame = CGRectMake(myX, myY, myWidth, myHeight); 

CGRect myButtonRect = myButton.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame: myButtonRect];   
myLabel.text = myLabelText;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentLeft;

[myButton addSubview:myLabel];
[myLabel release];

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


2

스위프트 2.0 :

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

필요한 경우 도움이 될 수 있습니다.


2

에서 스위프트 5.0엑스 코드 10.2

접근하는 두 가지 방법이 있습니다

1) 직접 접근

btn.contentHorizontalAlignment = .left

2) SharedClass 예제 (한 번 작성하고 모든 도자기 사용)

이것은 공유 클래스입니다 (이와 같이 모든 구성 요소 속성에 액세스하십시오)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

//UIButton extension
extension UIButton {
    func btnProperties() {
        contentHorizontalAlignment = .left
    }
}

ViewController 에서 다음 과 같이 호출하십시오.

button.btnProperties()//This is your button

1

시험

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
이것은 contentHorizontalAlignment가 도움이되지 않은 저에게 효과적이었습니다.
danfordham
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.