2017-09-05 1 views
-2

예를 들어, "Hello, world!"문자열을 넣어야합니다. UIButton속성이 지정된 텍스트의 색이 부모 색을 상속하는 방법은 무엇입니까?

"안녕하세요"및 "세계!" 다른 색상이어야합니다.

"Hello"의 기본 색상은 UIButton이며 "world!" 사용자 정의 색상은 NSMutableAttributedString입니다.

코드와 결과를 다시 설명합니다.

// Using a library `SwiftyAttributes`(https://github.com/eddiekaiger/SwiftyAttributes) 
button.attributedText = "Hello, ".withJust() + "world!".withTextColor(.red) 

button.setTitleColor(.black, for: .normal) 

내가 원하는 : 안녕하세요, (검정) 세계 (빨간색) 내가 원하는

button.setTitleColor(.red, for: .normal) 

:! 안녕하세요, (빨간색) 세계 (빨간색)

button.setTitleColor(.blue, for: .normal) 

원하는 항목 : 안녕하세요, (파란색) 세계! (빨간색)

그러나 항상 결과는 다음과 같습니다! 안녕하세요, (검정) 세계 (빨간색)

...

은 어쩌면 내가 NSMutableAttributedString 기본 색상의 우선 순위가 UIButton 기본 색상보다라고 생각합니다.

하지만 원하는 결과를 볼 수 있습니까?

답변

0

제목 문자열과 속성 문자열 사이에 "상속"이 있다고 생각합니다. 존재하지 않는다. 그들 사이에 전혀 관계가 없습니다.

attributedText을 사용하기 시작하면 바로 의 텍스트 색상을 담당하게됩니다. 색조 색과 제목 색은 완전히 관련성이 없어집니다. Hello가 파란색으로 표시 되려면 으로 설정해야합니다. 문자열에 파란색 으로 설정해야합니다.

0

이 목적으로 실제로 NSMutableAttributedString을 사용해야하지만 수행 한 것처럼 NSMutableAttributedString을 작성해야합니다.

let attrStr = NSMutableAttributedString(string: "Hello World") 
attrStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSRange(location: 0, length: 5)) 
attrStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: NSRange(location: 6, length: 5)) 
button.setAttributedTitle(attrStr, for: .normal) 

참고가 착색을 시작하려는 당신이 중지 할 위치 length가 어디 location이라고 : 당신이 시작하는 몇 가지 코드입니다. 따라서 Hellolocation: 0length: 5이됩니다.

출력 :
enter image description here

관련 문제