2011-02-05 3 views
27

UIButtonTypeCustom (셰이프) 형식의 UIButton을 만들고 싶습니다. 글꼴을 지정해야하기 때문에 button.titleLabel을 사용하여 제목을 지정하고 싶습니다. 다음 코드는 작동해야하지만 보이지는 않습니다. 레이블이 나타나지 않으며 마침표가 없습니다.iOS : UIButton titleLabel - 모든 작업을 수행합니까?

UIImage *editButtonImage = [UIImage imageNamed: @"editButton.png"]; 
float width = editButtonImage.size.width; 
float height = editButtonImage.size.height; 

UIButton *editButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
editButton.frame = CGRectMake(0, 0, width, height); 
[editButton setBackgroundImage: editButtonImage forState: UIControlStateNormal]; 
editButton.adjustsImageWhenHighlighted = YES; 
editButton.titleLabel.text = @"Edit"; 
editButton.titleLabel.textColor = [UIColor whiteColor]; 
editButton.titleLabel.textAlignment = UITextAlignmentCenter; 
editButton.titleLabel.font = [UIFont fontWithName: @"Helvetica" size: 14]; 
[self.view addSubview: editButton]; 

모두는 항상 setTitle : forState :를 사용한다고 말합니다.하지만 나는 싫어하는 글꼴을 제공합니다. titleLabel 메서드는 더 이상 사용되지 않습니다.

이전에 여러 번 실행 해 본 적이 있지만 항상 해결되었지만 실제로 해결하고 싶습니다. 어떤 아이디어?

답변

79

titleLabeltext 속성을 설정하면 아무 효과가 없습니다. 대신, 버튼을 -setTitle:forState:를 호출 버튼이 다른 상태 (예컨대, UIControlStateDisabled, UIControlStateHighlighted) 다른 제목을 가질 수 있기 때문에

[editButton setTitle:@"Edit" forState:UIControlStateNormal] 

이것에 대한 이유입니다. UIControlStateNormal 컨트롤 상태에 대한 속성 설정은 다른 컨트롤을 명시 적으로 지정하지 않으면 모든 상태에 적용됩니다. UIButton에 대한 문서 당

:

이 클래스는 제목, 이미지 및 버튼의 다른 모양 속성을 설정하는 방법을 제공합니다. 이러한 접근자를 사용하여 각 단추 상태에 대해 다른 모양을 지정할 수 있습니다.

상태에 따라 라벨의 색상과 음영 색상을 맞춤 설정할 수 있습니다. -setTitleColor:forState-setTitleShadowColor:forState을 각각 참조하십시오. titleLabel의 나머지 속성 (예 : textAlignmentfont)은 지금 설정 했으므로 작동해야하며 모든 제어 상태에 적용해야합니다.

특히, 설명서를 참조 UIButtontitleLabel 특성 : https://developer.apple.com/documentation/uikit/uibutton/1623992-titlelabel 자체가되어

titleLabel 읽기 전용,하지만 당신은 글꼴과 같은 자신의 속성 값을 변경할 수 없습니다 것을 의미하지 않는다, 줄 바꿈 모드 등.

+1

titleLabel을 사용하여 설정할 수없는 것은 실제 텍스트 값입니다. 그건 나에게 이상한 것 같지만 괜찮아. – Amagrammer

+4

처음에는 반 직관적입니다. 겉으로보기에, 레이블의'text' 속성을 설정하는 것은'-setTitle : forState'를 호출하기위한 바로 가기 일 뿐이지 않습니다. – LucasTizma

+2

마찬가지로 titleLabel의 textColor 속성을 직접 설정할 수 없지만 setTitleColor : forState : 메서드를 사용해야합니다. 이것을 언급 해 주셔서 감사합니다. 문서에 없기 때문입니다. – arlomedia

관련 문제