Swift 4 NSAttributedStringKey
에는이라는 정적 속성이 foregroundColor
있습니다. foregroundColor
다음과 같은 선언이 있습니다.
static let foregroundColor: NSAttributedStringKey
이 속성의 값은 UIColor
객체입니다. 렌더링하는 동안 텍스트의 색상을 지정하려면이 속성을 사용하십시오. 이 속성을 지정하지 않으면 텍스트가 검은 색으로 렌더링됩니다.
다음 놀이터 코드는 다음을 사용하여 NSAttributedString
인스턴스 의 텍스트 색상을 설정하는 방법을 보여줍니다 foregroundColor
.
import UIKit
let string = "Some text"
let attributes = [NSAttributedStringKey.foregroundColor : UIColor.red]
let attributedString = NSAttributedString(string: string, attributes: attributes)
쇼 아래 코드의 가능성 UIViewController
에 의존 구현 NSAttributedString
a의 텍스트와 텍스트 색상을 업데이트하기 위해 UILabel
A로부터 UISlider
:
import UIKit
enum Status: Int {
case veryBad = 0, bad, okay, good, veryGood
var display: (text: String, color: UIColor) {
switch self {
case .veryBad: return ("Very bad", .red)
case .bad: return ("Bad", .orange)
case .okay: return ("Okay", .yellow)
case .good: return ("Good", .green)
case .veryGood: return ("Very good", .blue)
}
}
static let minimumValue = Status.veryBad.rawValue
static let maximumValue = Status.veryGood.rawValue
}
final class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
var currentStatus: Status = Status.veryBad {
didSet {
// currentStatus is our model. Observe its changes to update our display
updateDisplay()
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Prepare slider
slider.minimumValue = Float(Status.minimumValue)
slider.maximumValue = Float(Status.maximumValue)
// Set display
updateDisplay()
}
func updateDisplay() {
let attributes = [NSAttributedStringKey.foregroundColor : currentStatus.display.color]
let attributedString = NSAttributedString(string: currentStatus.display.text, attributes: attributes)
label.attributedText = attributedString
slider.value = Float(currentStatus.rawValue)
}
@IBAction func updateCurrentStatus(_ sender: UISlider) {
let value = Int(sender.value.rounded())
guard let status = Status(rawValue: value) else { fatalError("Could not get Status object from value") }
currentStatus = status
}
}
당신이 정말로 사용하지 않아도하지만 참고 NSAttributedString
이러한 예를 들어 단순히 의존 할 수 UILabel
의 text
및textColor
속성 있습니다. 따라서 updateDisplay()
구현을 다음 코드로 바꿀 수 있습니다 .
func updateDisplay() {
label.text = currentStatus.display.text
label.textColor = currentStatus.display.color
slider.value = Float(currentStatus.rawValue)
}